实例属性:
每个对象用于绑定自己数据的变量叫实例变量,也叫属性
每个对象都有的特殊属性:
__dict__ 属性 __class__ 属性
类变量:
类变量的类的属性,此属性属于类,不属于类的实例
作用:
通常用来存储该类对象共有的数据
说明:
类变量可以通过类直接访问
类变量可以通过类的实例直接访问
类变量可以通过此类的对象的__class__属性间接访问
语法:
class 类名(继承列表):
类变量名 = 表达式
…………
类的文档字符串:
类内没有赋值给任何变量的字符串为类的文档字符串
类的文档字符串由类的__doc__属性绑定
类的__slots__属性
作用:
限定一个类创建的实例只能有固定的属性(实例变量)
不允许对象添加列表以外的属性
防止用户因写错属性的名称而发生程序错误
说明:
含有__slots__属性的类所创建的实例没有__dict__属性,即此实例不用字典来存储对象
的属性
类方法:
类方法是用于描述类的行为的方法, 此方法属于类,不属于该类创建的实例
说明:
1、类方法要使用@classmethod 装饰器定义
2、类方法至少一个形参,第一个形参参于绑定类,约定写为”cls“
3、类实例和对象示例都可以调用类方法
4、类方法不能访问此类创建的对象的属性
静态方法@staticmethod
静态方法是定义在类内的函数,此函数的作用域是类的内部
说明:
静态方法需要使用staticmethod装饰器定义
静态方法与普通函数定义相同,不需要传入self实例参数和cls类参数
静态方法只能凭借该类或类的实例调用
静态方法不能访问类变量和实例变量(属性)
继承(inheritance) 和 派生 (derived)
继承是指从已有的类中派生出新的类,新类具有类的原类的行为,并能扩展
新的行为
派生类就是从一个已有的类衍生出新的类,在新的类上可以添加新的属性和
行为
作用:
1、用继承派生机制,可以将一些共有功能加在基类中,实现代码共享
2、在不改变超类 的代码的基础上改变原有的功能
名词:
基类(base class)/超类(super class)/父类(father class)
派生类(derived class ) / 子类
单继承:
语法:
class 类名(基类名):
语句块
说明:
单继承是指派生类由一个基类衍生出来
继承说明;
任何类都直接可间接的继承自object类
object类是一分类的超类
类的__base__属性
__base__属性用来记录此类的基类
内建类的继承关系:
>>> help(__builtins__)
覆盖 overrride
覆盖是指在有继承关系的类中,子类中实现了与基类同名的方法,
在子类实例调用该方法时,实际调用的是子类中的覆盖版本的方法的
现象叫覆盖
super 函数:
super(type, obj) 返回绑定超类的实例(要求obj必须为type类型的实例)
super() 返回绑定超类的实例,等同于super(__class__, 实例方法的第一个参数),
必须用在方法内调用
作用:
返回绑定超类的实例, 用超类的实例来调用其父类的覆盖方法
显示调用基类的构造方法:
当子类中实现了__init__方法, 基类的构造方法并不会被调用,此时需要显示调用
基类的构造方法