Python如何定义静态方法和类方法

By | 2017年9月1日

Python普通的实例方法需要新建一个实例,为了不用新建实例,可以直接在模块中定义方法再调用,也可以定义静态方法或类方法。

方法一:使用函数修饰符

class TestStaticMethod:
    @staticmethod
    def foo():
        print 'calling static method foo()'
class TestClassMethod:
    @classmethod
    def foo(cls):
        print 'calling class method foo()'
        print 'foo() is part of class:', cls.__name__

注意
一般类方法默认参数为cls,通过cls.属性名可以访问类属性,效果同类名.属性名

方法二:使用内建函数

class TestStaticMethod:
    def foo():
        print 'calling static method foo()'
    foo = staticmethod(foo)
class TestClassMethod:
    def foo(cls):
        print 'calling class method foo()'
        print 'foo() is part of class:', cls.__name__
    foo = classmethod(foo)

注意
函数被内建函数转化成相应的类型,并且重新赋值给了相同的变量名。如果没有调用这两个函数,二者都会在Python编译器中出错,显示需要带self的常规方法声明。

总结

类中的方法有三种类型:
- 实例方法:默认参数self
- 静态方法:没有默认参数
- 类方法:默认参数一般为cls

发表评论

电子邮件地址不会被公开。 必填项已用*标注