为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我可以覆盖类变量?指针被覆盖?

为什么我可以覆盖类变量?指针被覆盖?

阿波罗的战车 2021-06-17 17:04:14
我有这么一段代码: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__

{}


查看完整回答
反对 回复 2021-06-29
  • 1 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信