# class fun(): # a = 1 # 类属性 # def l(self): # a = 4 # print('a') # b = fun() # print(fun.a) # class Test(object): # name = 'scolia' # # a = Test() # Test.name = 'scolia good' # 通过类进行修改类属性,成功!连实例属性都改了 # print(Test.name) # print(a.name) # class Test(object): # name = 'scolia' # # a = Test() # a.name = 'scolia good' # 通过实例进行修改,不成功,只是相当于重新创建了实例属性,没有修改类属性 # print(Test.name) # print(a.name) # 这里的情况是我在实例中访问一个属性,但是我实例中没有,我就试图去创建我的类中寻找有没有这个属性。 # 找到了,就有,没找到,就抛出异常。(这里说明了实例对象能够访问类的属性!反之,类对象不能访问实例属性!) # 而当我试图用实例去修改一个在类中不可变的属性的时候,我实际上并没有修改,而是在我的实例中创建了这个属性。 # 而当我再次访问这个属性的时候,我实例中有,就不用去类中寻找了。 # class Test(object): # name = 'scolia' # # a = Test() # a.abc = 123 # print(dir(Test)) # abc 自动在实例属性中创建了 # print(dir(a)) # 已经证实了实例属性能够被类对象修改,试着通过实例修改类属性 # class Test: # list1 = [] # # a = Test() # a.list1.append(123) # 通过实例修改类中的列表 # print(Test.list1) # print(a.list1) # 也可以任性地为某个实例添加方法,python 支持动态添加属性 # class Test: # pass # # def fangfa(): # print('我是某个实例的方法') # # a = Test() # b = Test() # a.abc = fangfa # 特意添加一个方法 # a.abc() # b.abc() # b 没有这个方法 # 还能为类动态添加方法 class Test: pass def fangfa(self): # self 代表是实例方法,只能由实例调用 print('我是方法') Test.abc = fangfa a = Test() a.abc() b = Test() # 已经修改(新增)了类的方法 b.abc()