Python的类方法和静态方法

作者: 一根薯条 | 来源:发表于2018-04-08 19:51 被阅读0次

Python的类一共有三种方法:

  • 最常见的类方法
  • Classmethod
  • Staticmethod

下面这个类包含了这三种方法,从调用可以看出他们的用法。

class A(object):
    bar = 1
    def foo(self):
        print 'foo'

    @staticmethod
    def static_foo():
        print A.bar

    @classmethod
    def class_foo(cls):
        cls().foo()

A.static_foo()
A.class_foo()
a = A()
a.foo()

最常见的类方法

所谓类方法就是通过实例作为第一个参数的方法,里面的self参数是对类的绑定。

class A(object):
    def foo(self):
        print 'foo'

Classmethod

如果现在想写一些只与类交互而不和实例交互,我们可以使用类方法和静态方法。
所谓类方法就是只在类中运行,不在实例中运行的方法,定义时,在方法上面用@classmethod装饰器进行装饰,方法的第一个参数接受一个类,而不是一个对象;使用的时候直接用类名.方法名()调用。

class A(object):
    @classmethod
    def class_foo(cls):
        cls().foo()

A.class_foo()

Staticmethod

还有一种方法,运行时不需要实例和类的参与,他的作用是操作类属性而不是实例属性。
比如说要实现一个统计类构造的实例的个数的功能:

class Spam:
     num = 0
     def __init__(self):
        Spam.num += 1

     @staticmethod
     def print_num():
         print Spam.num

a = Spam()
b = Spam()
Spam.print_num()

相关文章

网友评论

    本文标题:Python的类方法和静态方法

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