静态方法和类方法的创建:
将它们分别包装在staticmethod和classmethod类的对象中。
静态方法的定义中没有参数self,可直接通过类来调用。
类方法的定义中包含类似于self的参数,通常被命名为cls。对于类方法,也可通过对象直接调用,但参数cls将自动关联到类。
示例:
1 class MyClass:
2
3 def smeth():
4 print("This is a static method")
5
6 smeth = staticmethod(smeth)
7
8 def cmeth(cls):
9 print("This is a class method of",cls)
10 cmeth = classmethod(cmeth)
像这样手工包装盒替换方法有点繁琐。所以引入装饰器(装饰器可用于包装任何可调用的对象,并且可用于方法和函数),可指定一个或多个装饰器,为此可在方法(或函数)前面使用运算符@列出这些装饰器,
指定多个装饰器时,应用的顺序与列出的顺序相反(从后往前调用)。
1 class MyClass:
2
3 @staticmethod
4 def smeth():
5 print("This is a static method")
6
7 @classmethod
8 def cmeth(cls):
9 print("This is a class method of",cls)
定义这些方法后,就可像下面那样使用它们(无需实例化类):
This is a static method
This is a class method of <class '__main__.MyClass'>