我一直在读一些书,思考这个代码:
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)
此代码的输出为:
所以我假设对于3,m&Value是别名,但是改变m的属性会破坏这一点。我无法通过运行id()来确认这一点-结果是m和value总是有不同的id。你知道吗
有人能解释一下发生了什么事吗?你知道吗
Tags:
更改
Value
的值时,您正在更改所有value
实例共享的x
值。你知道吗当您更改
m
的值时,您只为m
和m
执行此操作,实际上是用一个新的实例x
重写类x
。你可以用眼睛看相关问题 更多 >
编程相关推荐