我有这么一段代码:class Car: wheels = 4if __name__ == "__main__": car = Car() car2 = Car() print(car2.wheels) print(car.wheels) car.wheels = 3 print(car.wheels) print(car2.wheels)哪些输出:4434这里“wheels”被定义为一个类变量。类变量由所有对象共享。但是,我可以更改该类的特定实例的值吗?现在我知道要修改我需要使用类名的类变量:Car.wheels = 3我仍然对如何/为什么发生这种情况感到困惑。我是创建实例变量还是使用以下方法覆盖该实例的类变量:car.wheels = 3- 或者是其他东西?
1 回答
凤凰求蛊
TA贡献1825条经验 获得超4个赞
您是对的,您没有覆盖 class 属性wheels
,而是创建一个wheels
为对象命名的实例属性并将其car
设置为 3。
这可以使用特殊__dict__
属性进行验证:
>>> class Car:
... wheels=4
...
>>> c1 = Car()
>>> c2 = Car()
>>>
>>> c1.wheels=3
>>> c1.wheels
3
>>> c2.wheels
4
>>> c1.__dict__
{'wheels': 3}
>>> c2.__dict__
{}
添加回答
举报
0/150
提交
取消