面向对象中的成员和组合
class Foo: # 类变量(静态字段) age = 233 def __init__(self, name): # 实例变量 self.name = name def func(self): pass # 不同的对象,有不同的存储空间,保存着自己的属性(字段) obj1 = Foo("Canaan") obj2 = Foo("Jianjian") print(obj1.age, obj1.name) # 静态字段也可以通过对象访问,如果本身没有,就回去类里面找 print(obj2.age, obj2.name) print(Foo.age) # 静态字段也可以通过类名去直接访问 Foo.age = 2333 # 静态字段要通过类名去修改 print(Foo.age) print(obj1.age, obj1.name) print(obj2.age, obj2.name) obj1.age = 123 # 静态字段可以通过对象修改,每个对象之间互不影响,修改之后对类中的类变量也不影响 print(obj1.age, obj1.name) print(obj2.age, obj2.name) # 对于实例变量(字段)访问时,只能通过对象访问,即obj.name # 对于类变量(静态字段),访问时,通过类名去访问,不方便时再使用对象去访问 print(obj1.name) print(Foo.age) # 对象对于实例变量(字段)的修改,属性修改互不影响 # 对象对于类变量(静态字段)的修改,对象之间也互不影响,也不影响类中的静态字段,只是相当于在自己的存储空间内封装了一条新的属性 # 以后对于这个字段的使用,每个对象都先访问自己的存储空间,有就用自己的,没有再去用类中的 obj1.age = 123 Foo.age = 2333
使用情况:
如果对象中有一些相同的值,同时修改同时删除,就可以提取为类变量
私有变量和共有变量