Python面向对象实例和类的可变性

2024-03-28 19:10:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在读一些书,思考这个代码:

def change(c, n: int) -> None:
    c.x = n


class Value:
    x = 5


m = Value()
change(Value, 3)
print(m.x)
change(m, 1)
change(Value, 2)
print(m.x)

此代码的输出为:

  • 1个

所以我假设对于3,m&Value是别名,但是改变m的属性会破坏这一点。我无法通过运行id()来确认这一点-结果是m和value总是有不同的id。你知道吗

有人能解释一下发生了什么事吗?你知道吗


Tags: 代码noneid属性valuedefchangeclass