gpt4 book ai didi

python - 类属性的继承?

转载 作者:太空宇宙 更新时间:2023-11-04 08:47:17 25 4
gpt4 key购买 nike

有人可以详细解释为什么会这样吗?在这种情况下,Python 编译器如何创建类变量?

class A(object):
x = 1
y = x + 1

class B(A):
x = 10

>>> B.x
10
>>> B.y
2 # ---> I was expecting 11 here, why does this y still uses the A's value?

最佳答案

因为在评估类本身的同时评估类变量。这里的事件顺序是:定义了 A 并设置了其中的值,因此 x 为 1,y 为 2。然后 B 被定义,并且 B 中的 x 条目被设置为 10。然后你访问 B.y,并且因为那里B 中没有y 条目,它检查其父类。它确实在 A 中找到了一个 y 条目,其值为 2y 只定义一次。

如果你真的想要这样一个变量,你可能想要定义一个类方法。

class A:
x = 1

@classmethod
def y(cls):
return cls.x + 1

class B(A):
x = 10

>>> B.y()
11

关于python - 类属性的继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39134847/

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