类和对象
类的构造方法 def __init__():
1 class People: 2 def __init__(self,name): 3 self.name = name
注意:在构造方法中的变量不用再次声明,必须有self,创建类的对象是用=
类的私有成员
让方法或者类变为私有,只要在它的名字前加上双下划线
1 class People: 2 __name = ‘laowang‘ 3 def getname(self): 4 return self.__name
注意:类的私有成员可以通过方法访问,也可以通过 _类名__私有成员这种格式来访问
类的继承
class 子类(父类、基类、超类)
在继承构造函数的过程中,可以用以下两个方法,推荐方法2:
(1)调用未绑定的父类构造方法
1 class People: 2 def __init__(self): 3 self.name = ‘aa‘ 4 class Student(People): 5 def __init__(self): 6 People.__init__(self) 7 self.son = 20
(2)使用super
class People: def __init__(self): self.name = ‘aa‘ class Student(People): def __init__(self): super().__init__() self.son = 20
super可以不带任何参数,但是当父类中有参数传入,super后的__init__要加上参数而且不能加上self
1 class People: 2 def __init__(self,name): 3 self.name = name 4 class Student(People): 5 def __init__(self,name,sno): 6 super().__init__(name) 7 self.name = name 8 self.sno = sno
类的组合
类之间没用明显继承关系可以用组合,比如一个电话簿的类由电话和地址类组合起来:
1 class Tel: 2 def __init__(self,x): 3 self.info = x 4 5 class Add: 6 def __init__(self,y): 7 self.info = y 8 9 class Notebook: 10 def __init__(self,x,y): 11 self.tel = Tel(x) 12 self.add = Add(y) 13 def print_info(self): 14 print("Tel:%s\nAdd:%s" %(self.tel.info,self.add.info))
类 类对象 实例对象
类对象就像C++中的static变量,一个对象有了实例对象后就将类对象的值覆盖了
属性名如果和方法名相同,属性会覆盖方法
绑定
对象.__dict__返回对象拥有的属性
对象调用后方法绑定到实例对象上del类后,a的方法还是存在的,因为A的方法和属性都是static,程序退出前不会消失
一些和类相关的BIF
issubclass(class, classinfo)
isinstance(object, classinfo)
hasattr(object, name) 注意第二个参数要用字符串格式
getattr(object, name[, default])
setattr(object, name, value) 设置属性
delattr(object, name) 删除属性,属性不存在抛出异常
时间: 2024-10-20 06:19:50