@staticmethod和@classmethod的区别
什么是python的修饰符Decorators?
装饰器模式可以在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责,也能够处理那些可以撤销的职责。经常用于日志记录、性能测试等场合。
想象一下这个很常见的场景,你写了一个方法:
|
|
用修饰符优美的表达式
|
|
当有多个修饰符时候,由远及近影响,如下:
|
|
我们再举一个日志的例子
|
|
@staticmethod和@classmethod
Python其实有3个方法,即静态方法(staticmethod),类方法(classmethod)和实例方法
@staticmethod和@classmethod本身也是装饰器的一种特例。先看下面的例子:
|
|
\ | 实例方法 | 类方法 | 静态方法 |
---|---|---|---|
a = A() | a.foo(x) | a.class_foo(x) | a.static_foo(x) |
A | 不可用 | A.class_foo(x) | A.static_foo(x |
参考:
http://pythoncentral.io/difference-between-staticmethod-and-classmethod-in-python/