美文网首页我爱编程
Python进阶话题杂谈(九)staticmethod与clas

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

作者: 樱雨楼 | 来源:发表于2018-06-21 21:35 被阅读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月于苏州

相关文章

网友评论

    本文标题:Python进阶话题杂谈(九)staticmethod与clas

    本文链接:https://www.haomeiwen.com/subject/tszcyftx.html