一 类的定义:
(1)格式:
*class 类名(基类1,基类2...):
data=value
def method(self,...):
...
(2)特点:
*class是复合语句,所以任何类的语句都可以写入其主体内:print、if、def等;class语句在执行时,class内的所有语句都会执行;类的定义是可执行语句。
*在类中定义的变量是类的属性,由所有对象共享;实例的属性是通过在方法中self.name=value定义的;名字相同时实例属性会隐藏类属性。
(3)技巧:
*如果一个类不继承自其它类,,就显式的从object继承.,嵌套类也一样。继承自 object 是为了使属性(properties)正常工作,并且这样可以保护你的代码,使其不受Python 3000的一个特殊的潜在不兼容性影响。这样做也定义了一些特殊的方法,这些方法实现了对象的默认语义,包括 __new__, __init__, __delattr__, __getattribute__, __setattr__, __hash__, __repr__, and __str__ 。补充:python2.7是这样,python3.2声不声明object都一样,都包括上述属性。
*类中以双下划线开始的属性不能被直接访问。
二 类的属性:
(1)获取类属性:dir(类名)和类名.__dict__。
*__name__:类名(字符串)。
*__doc__:类文档。
*__module__:类定义所在模块。
*__bases__:类的父类构成的元组。
(2)实例属性:dir(实例名)和实例.__dict__。
*__class__:实例的类。
(3)类中特殊函数:
三 类的静态方法和类方法:
(1)定义方式:
*静态方法:在类的定义中,func=staticmethod(func)或@staticmethod函数修饰符。
*类方法:在类的定义中,func=classmethod(func)或@classmethod函数修饰符,类方法中类(cls)作为第一个参数。
四 继承:
(1)格式:
*class subclass(ParentClass...)
*子类的__bases__属性包含了其父类的元组。