首页 > 代码库 > python的静态方法、类方法与实例方法
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的静态方法、类方法与实例方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。