我一直在阅读一些内容,思考这段代码:
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
- 1
有人能解释一下发生了什么吗?
我一直在阅读一些内容,思考这段代码:
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)
当你改变Value
的值时,你实际上是改变了所有value
实例所共享的x
值。
而当你改变m
的值时,你只是为m
本身做出改变,实际上是用一个新的实例 x
来覆盖类x
。你可以通过下列代码看到:
k = Value()
print(k.x) # 2
3 1
,而非3 2
。 - Guy