我爱编程

Python进阶话题杂谈(九)staticmethod与clas

2018-06-21  本文已影响0人  樱雨楼

staticmethod与classmethod是Python中的两个用于方法的装饰器,其应用范围并不广泛,故本文只对其作简要讨论。

1 staticmethod

staticmethod装饰器用于将一个普通方法转变为一个普通函数。可以去除在方法调用时,类对象自动与方法的self参数进行绑定这一行为。staticmethod常用于定义一些与当前类关系紧密的普通函数:

class Test:

   @staticmethod

   def t():

       print('t')

Test().t()

上述代码定义了一个静态方法。此静态方法与定义在类外部的普通函数一致,没有对象自动绑定这一行为,也没有self参数。

2 classmethod

classmethod装饰器用于将一个普通方法转变为一个类方法。使得此方法在调用时,不通过类对象对此方法进行调用,而是使用类本身进行调用,且类方法的第一参数将自动与类本身进行绑定。类方法常用于定义备选的__init__方法:

class Test:

   @classmethod

   def t(cls):

       print('t')

       return cls()

Test.t()

上述代码即定义了一个类方法,其通过Test类本身,而不是Test()进行调用。作用为进行一次输出后再生成并返回一个类实例。

2018年6月于苏州

上一篇 下一篇

猜你喜欢

热点阅读