类和对象问题
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并没有这个属性 lxping 发表于 2022-12-26 17:46
首先你要理解什么是类属性,什么时候对象属性:
类属性不属于任何一个对象特有,他是类以及他的所有对象共 ...
1、class C:
x = []
def add_x(self, x):
self.x.append(x)
2、class C:
x=520
def add_x(self,y):
self.x=y
c=C()
c.add_x(250)
为什么第一个定义的就是类属性,第二个定义的就是对象属性呢?如何从class类定义的哪个语句可以区分数定义的类的属性还是对象的属性呢? lxping 发表于 2022-12-26 17:46
首先你要理解什么是类属性,什么时候对象属性:
类属性不属于任何一个对象特有,他是类以及他的所有对象共 ...
为什么帖子上在第一种情况下加了一个__init__函数之后就能从定义类属性变成了定义对象属性呢? wangye666 发表于 2022-12-27 08:25
为什么帖子上在第一种情况下加了一个__init__函数之后就能从定义类属性变成了定义对象属性呢?
新版61讲和62讲的视频好好琢磨理解一下
页:
[1]