1.关于类属性和对象属性的误区
在
Python
中,一切皆对象
··class AAA:定义的类属于 类对象
··obj1 = AAA() 属于 实例对象
·
①类在python中也是一个对象,称为 类对象
②而在类中创建的属性(即非类中创建的方法中的属性)称为 类属性
③当程序运行时,类也会被分配到内存中运行
④用实例对象调用类属性时,python会先从实例对象中查找该属性,没有找到时会到类中查找(从上到下查找)
⑤当实例对象为类属性赋新值时,会自动在实例对象的内存中创建出一个同名属性,并不会改变类属性的值,因此在需要调用类属性时应当采用 类名.类属性
, 而不要使用 实例对象.类属性
·
2.类方法
类方法 是针对 类对象 定义的方法
··在 类方法 内部可以直接访问 类属性 或者调用其他 类方法
实现方法:
@classmethod
def 类方法名(cls):
pass
··类方法需要用修饰器@classmethod
来标识,告诉解释器这是一个类方法
··类方法的第一个参数应该是cls
(和实例方法中的self类似,使用其他名称也可以)
··在类方法中,可以通过cls.
访问类的属性或调用其他的类方法
·
3.静态方法
●在开发时,如果需要在 类 中封装一个方法,这个方法:
。既不需要访问实例属性或者调用实例方法
。也不需要访问类属性或者调用类方法
●这个时候,可以把这个方法封装成一个 静态方法
实现方法:
@staticmethod
def 类名():
pass
注:在调用静态方法时不需要创建实例对象,用
类名.静态方法名()
即可调用