python的静态方法类方法与实例方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python的静态方法类方法与实例方法相关的知识,希望对你有一定的参考价值。
话不多说,直接上程序:
a = 111 class A(object): a = 1 def f_instance(self): print self.a @staticmethod def f_static(): print a @classmethod def f_class(cls): print cls.a aaa = A() A.f_class #1 A().f_class #1 aaa.f_class #1 A.f_static() #111 A().f_static() #111 aaa.f_static() #111 A.f_instance() # TypeError A().f_instance() #1 aaa.f_instance() #1 f_static() #NameError aaa.a = 2 A.f_class() #1 A().f_class() #1 aaa.f_class() #1 A.f_static() #111 A().f_static() #111 aaa.f_static() #111 A.f_instance() # TypeError A().f_instance() #1 aaa.f_instance() #2 f_static() #NameError A().a = 2; aaa.a=1 #基于上一步的赋值 A.f_class() #1 A().f_class() #1 aaa.f_class() #1 A.f_static() #111 A().f_static() #111 aaa.f_static() #111 A.f_instance() # TypeError A().f_instance() #1 aaa.f_instance() #1 f_static() #NameError A.a = 10 #基于上一步的赋值 A.f_class() #10 A().f_class() #10 aaa.f_class() #10 A.f_static() #111 A().f_static() #111 aaa.f_static() #111 A.f_instance() # TypeError A().f_instance() #10 aaa.f_instance() #1 f_static() #NameError
总结如下:
静态方法 : 和在类外面 定义的方法 效果一样,只不过该方法是类专有的,在外部不可直接访问。类和实例都可以调用。
类方法 : 相当于所有的 该类的 实例的 “党章”,它的改变 能够影响 之后新的实例中的 实例属性,但是对旧的实例(在类属性改变之前所定义的实例)没有影响。实例也可以调用该方法,和类调用的效果相同,返回的是类属性。
实例方法:只能在实例化之后被调用,只能影响实例属性,不能影响类属性,并且实例属性在被实例化之后不受类方法的影响,实例化之后也不因类属性改变而改变。类不可以调用,会返回TypeError。
以上是关于python的静态方法类方法与实例方法的主要内容,如果未能解决你的问题,请参考以下文章