三:类
1:创建类,括号内可以添加父类,object是“所有类之母”,如果类没有继承任何其它类,则将object作为默认的父类,
pass处添加具体代码
类的实例化: eg: MyClassObject = MyClass()
创建子类:class 子类名(父类名):子类继承父类的所有属性和方法,构造器须单独定义,父类的构造器要显示写出才被执行,即父类._init_()
2: 类数据属性 -----------------类名.属性名
查看类的属性:内建函数dir(类名) ,返回的是一个名字列表
类名._dict_,返回的是一个字典
特殊类属性:_name_ 返回类名
_doc_ 返回类的文档字符串
_bases_ 返回所有父类构成的元组
_dict_ 返回类的属性
_module_ 返回类的模块
_class_ 返回类中所对应的类
实例属性-----------------------实例.属性名
当一个实例被释放时,它的属性同时也被清除。
特殊实例属性:_class_ 实例的所属类
_dict_ 实例的属性
类属性和实例属性的区别:
(1):当类属性不可变情况下:当类属性变化,则实例属性也变化
当实例属性变化,而类属性不变化
(2):当类属性可变情况下(像属性为列表、字典等):当类属性变化,则实例属性也变化
当实例属性变化,而类属性也变化
3: 方法:给类添加功能,在类中定义方法,函数的第一个参数为self,并且方法必须绑定到一个实例上才能使用,self它表示调用此方法的实例对象。
特殊方法:_init_():在类实例化过程中调用,像C++中的构造函数,叫构造器
在子类中重写_init_()且子类被实例化时,父类的_init_()不会被自动调用,若想调用,则可以在子类的_init_
中显式写出 父类._init_(self)或者用super(子类,self)._init_()
_new_():一种静态方法,并且传入的参数是在类实例化操作时生成的。通常设置不变数据类型的子类。
_del_():当类实例的引用计数为0时,则调用方法将实例清除,且只被调用一次,且也要显式调用父类的_del_()。
4:类、实例的内建函数
(1)issubclass(子类,父类):判断一个类是另外一个类的子类或者子孙类。
(2)isinstance(实例,类(类型)):判断一个实例是不是给定类的实例。
(3)hasattr(实例,属性)、getattr(实例,属性)、setattr(实例,属性,属性值)、delattr(实例,属性):对属性的操作。
(4)dir(参数):列出参数内的所有属性信息。
(5)vars():返回是一个字典,且对象参数必须有_dict_属性。
5:多态
顾名思义,表示是多种形式,意味着*可以对不同类的对象使用同样的操作*,多态不仅适用于方法中,也适用于内建运算符和函数。
将不同类中的共同方法抽取到同一类中(不同类继承到同一类中)
6:重新构造方法
如果一个子类的构造方法进行重写,那么需要调用超类的构造方法来确保进行基本初始化
方法一:在子类的__init__(self)中加入超类.__init(self)-------------------------用在普遍情况下
方法二:在子类的__init__(self)中加入super(子类,self).__init__()-----用在多个超类时方便