|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1、class C:
x = []
def add_x(self, x):
self.x.append(x)
2、class C:
def __init__(self):
self.x = []
def add_x(self, x):
self.x.append(x)
a = C()
b = C()
a.add_x(520)
b.add_x(250)
第一个问题:为什么第一种情况下会修改C的属性,不是修改的是对象a和b属性吗?
第二个问题:为什么第一种情况下对象a和b不应该是相互无关的吗,为什么它们的属性会一起修改?
第三个问题:为什么第二种情况下反而可以单独修改对象属性,而不修改类的属性和方法?
首先你要理解什么是类属性,什么时候对象属性:
类属性不属于任何一个对象特有,他是类以及他的所有对象共有的一个属性
对象属性必须和对象自身绑定,就是在定义类的时候用self形参代替
第一个问题:你定义的是类的属性,只是你用对象c和d对该属性进行访问而已
第二个问题:这里访问的是类属性,并不是对象属性
第三个问题:对象属性是用self形参和自身绑定的,类C并没有这个属性
|
|