gpt4 book ai didi

Python OOP 实例和类的可变性

转载 作者:行者123 更新时间:2023-12-01 13:11:44 24 4
gpt4 key购买 nike

我一直在做一些阅读和思考这段代码:

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

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

    有人可以解释发生了什么吗?

    最佳答案

    当您更改 Value 的值时您正在更改 x所有的值(value)value实例。

    当您更改 m 的值时, 你这样做是为了 mm单独,基本上覆盖类 x带有新实例 x .你可以看到它

    k = Value()
    print(k.x) # 2

    关于Python OOP 实例和类的可变性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59550248/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com