美文网首页
Python中的静态方法,类方法和实例方法

Python中的静态方法,类方法和实例方法

作者: 无敌的肉包 | 来源:发表于2018-03-26 18:04 被阅读0次

    Python中有三种方法,分别是:

    • 静态方法 staticmethod
    • 类方法 classmethod
    • 实例方法 instancemethod

    看这段代码

    def foo(x):
        print "executing foo(%s)"%(x)
    
    class A(object):
        def foo(self,x):
            print "executing foo(%s,%s)"%(self,x)
    
        @classmethod
        def class_foo(cls,x):
            print "executing class_foo(%s,%s)"%(cls,x)
    
        @staticmethod
        def static_foo(x):
            print "executing static_foo(%s)"%x
    
    a=A()
    

    这里先理解下函数参数里面的selfcls.这个selfcls对类或者实例的绑定,对于一般的函数来说我们可以这么调用foo(x),这个函数就是最常用的,它的工作跟任何东西(类,实例)无关.对于实例方法,我们知道在类里每次定义方法的时候都需要绑定这个实例,就是foo(self, x),为什么要这么做呢?因为实例方法的调用离不开实例,我们需要把实例自己传给函数,调用的时候是这样的a.foo(x)(其实是foo(a, x)).类方法一样,只不过它传递的是类而不是实例,A.class_foo(x).注意这里的selfcls可以替换别的参数,但是python的约定是这俩,还是不要改的好.

    对于静态方法其实和普通的方法一样,不需要对谁进行绑定,唯一的区别是调用的时候需要使用a.static_foo(x)或者A.static_foo(x)来调用.

    \ 实例方法 类方法 静态方法
    a = A() a.foo(x) a.class_foo(x) a.static_foo(x)
    A 不可用 A.class_foo(x) A.static_foo(x)

    相关文章

      网友评论

          本文标题:Python中的静态方法,类方法和实例方法

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