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

我有这么一段代码:


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”被定义为一个类变量。类变量由所有对象共享。但是,我可以更改该类的特定实例的值吗?


现在我知道要修改我需要使用类名的类变量:


Car.wheels = 3

我仍然对如何/为什么发生这种情况感到困惑。我是创建实例变量还是使用以下方法覆盖该实例的类变量:


car.wheels = 3

- 或者是其他东西?


阿波罗的战车
浏览 142回答 1
1回答

凤凰求蛊

您是对的,您没有覆盖 class 属性wheels,而是创建一个wheels为对象命名的实例属性并将其car设置为 3。这可以使用特殊__dict__属性进行验证:>>> class Car:...   wheels=4... >>> c1 = Car() >>> c2 = Car()>>> >>> c1.wheels=3>>> c1.wheels3>>> c2.wheels4>>> c1.__dict__{'wheels': 3}>>> c2.__dict__{}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python