普通方法(实例方法)
类中最常用的方法是实例方法, 即通过通过实例作为第一个参数的方法。
1 | class A(object): |
类方法(@classmethod)
仅仅与类交互而不是和实例交互的方法。
1 | class A(object): |
好处是: 不管这个方式是从实例调用还是从类调用,它都用第一个参数把类传递过来。
静态方法(@staticmethod)
经常有一些跟类有关系的功能但在运行时又不需要实例和类参与的情况下需要用到静态方法。比如更改环境变量或者修改其他类的属性等能用到静态方法。
1 | IND = 'ON' |
1 | class A(object): |
1 | class A(object): |
@staticmethod
不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样。@classmethod
也不需要self参数,但第一个参数需要是表示自身类的cls参数。
如果在@staticmethod
中要调用到这个类的一些属性方法,只能直接类名.属性名或类名.方法名。
而@classmethod
因为持有cls参数,可以来调用类的属性,类的方法,实例化对象等,避免硬编码。
1 | class A(object): |