话不多说,直接上程序:
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
原文:http://www.cnblogs.com/lc-D-a/p/6070482.html