我有这段代码:
class Car:
wheels = 4
if __name__ == "__main__":
car = Car()
car2 = Car()
print(car2.wheels)
print(car.wheels)
car.wheels = 3
print(car.wheels)
print(car2.wheels)
哪个输出:
4
4
3
4
此处“ wheels”被定义为类变量。类变量由所有对象共享。但是,我可以为该类的SPECIFIC实例更改其值吗?
现在我知道要修改类变量,我需要使用类名:
Car.wheels = 3
对于这种情况的发生方式/原因,我仍然感到困惑。我是创建实例变量还是使用以下方法覆盖该实例的类变量:
car.wheels = 3
-还是其他?
答案 0 :(得分:1)
是的,您没有覆盖类属性wheels
,而是为对象wheels
创建了一个名为car
的实例属性并将其设置为3。
可以使用the special __dict__
attribute进行验证:
>>> class Car:
... wheels=4
...
>>> c1 = Car()
>>> c2 = Car()
>>>
>>> c1.wheels=3
>>> c1.wheels
3
>>> c2.wheels
4
>>> c1.__dict__
{'wheels': 3}
>>> c2.__dict__
{}