类的定义
1.使用class
class ClassName: /ClassName(object):
(缩进)'类文档字符串'
(缩进)类属性
(缩进)类方法
(缩进)cls.类变量,方法的变量/局部变量
(缩进)静态方法
(缩进)方法的变量/局部变量
(缩进)实例方法
(缩进)self.实例变量,方法的变量/局部变量
(缩进)其它语句(在类对象定义时会执行一次,之后不在执行)
2.使用元类type()
type()函数依次传入3个参数:
>类对象名
>继承的父类集合
>实例方法名称与函数绑定
* 如{‘实例方法名’:function},’类属性’:属性值...或dict(实例方法名=function,类属性=属性值,...) *
类的属性
1.分类
>定义类时为类静态添加的类属性
·在类的内部,方法的外部定义 属性名=属性值
·类生成后由系统自动赋值的部分内置类属性
>定义类后为类动态添加的类属性
·添加类属性:类对象.新属性=属性值
·初始化类静态属性:使用 类对象.静态属性 即可初始化类静态属性
2.内置的类属性
>在类生成后由系统自动赋值
·类的属性/方法集
属性名:__dict__
属性值:一个map对象,包含一个字典,由类的属性/方法名组成
说明: 可以操作该字典从而改变实例属性和动态添加方法
·类名
属性名:__name__
属性值:类名
·类定义所在的模块
属性名:__module__
属性值:类所在模块(在本模块属性值为__main__,在其它模块属性值为其它模块名
·类的所有父类
属性名:__bases__
属性值:包含了一个由所有父类组成的元组
>特殊赋值方式
·类的文档字符串
属性名:__doc__
属性值:该类的文档说明
赋值方法:* 该属性先会被赋值为类体下的说明字符串,若之后再类体中重新赋给该属性值,则以后者为最终属性值
>主动在类体中赋值
·限制类的实例属性/方法
属性名:__slots__
属性值:__slots__=(sx,sx..)
说明:
* 用于限制给该类的实例添加属性/方法,但不限制类
* 类中有__slots__属性时,类不能使用__slot__元组中的属性/方法名作为类属性/方法,而其实例只能使用__slot__元组中的属性/方法名作为实例属性/方法.
* 该属性对其子类的实例无作用,除非子类也有__slots__属性,则子类实例允许定义的属性/方法就是自身的__slots__加上父类的__slots__