gpt4 book ai didi

python - 对 Python 类和实例变量的复合赋值

转载 作者:太空狗 更新时间:2023-10-30 01:17:38 25 4
gpt4 key购买 nike

我一直在努力理解 Python 对类和实例变量的处理。特别是,我发现了 this answer很有帮助。基本上它说,如果你声明一个类变量,然后你对 [instance].property 进行赋值,你将完全赋值给一个不同的变量——一个在与类不同的命名空间中变量。

然后我考虑了——如果我希望我的类的每个实例都有一个具有默认值(比如零)的成员,我应该这样做吗:

class Foo:
num = 0

还是这样?

class Foo:
def __init__(self):
self.num = 0

根据我之前阅读的内容,我认为第二个示例将初始化“正确的”变量(实例而不是类变量)。但是,我发现第一种方法也非常有效:

class Foo:
num = 0

bar = Foo()
bar.num += 1 # good, no error here, meaning that bar has an attribute 'num'
bar.num
>>> 1
Foo.num
>>> 0 # yet the class variable is not modified! so what 'num' did I add to just now?

那么..为什么这行得通?我没有得到什么? FWIW,我之前对 OOP 的理解来自 C++,因此类比解释(或指出它崩溃的地方)可能会有用。

最佳答案

就我个人而言,我找到了 these documents Shalabh Chaturvedi 就此主题提供了极其有用和丰富的信息。

bar.num += 1bar.num = bar.num + 1 的简写。这是在右侧选取类变量 Foo.num 并将其分配给实例变量 bar.num

关于python - 对 Python 类和实例变量的复合赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2424451/

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