gpt4 book ai didi

python - 从 __init__ 调用类方法而不重复类名

转载 作者:太空宇宙 更新时间:2023-11-03 14:27:55 24 4
gpt4 key购买 nike

我想从 __init__ 中调用类方法 addInstances,而不重复类名 Foo

class Foo():
myInstances = {}

@classmethod
def addInstance(cls, name, obj):
cls.myInstances[name]=obj

def __init__(self, name):
Foo.addInstance(name, self) # class name "Foo" is repeated

#use the class
if __name__ == "__main__":
Foo('testName')
print(Foo.myInstances)

上面的代码做了我期望的事情。然而“Foo”被重复。

更换线路

Foo.addInstance(name, self) # class name "Foo" is repeated

cls.addInstance(name, self)

导致NameError:名称“cls”未定义

最佳答案

只要您不将 addInstance 重写为简单方法

self.addInstance 

也会起作用。

clsself 都是约定 - 与 C++ this 不同,C++ 是标准的。

这就是为什么你必须显式将它们分别传递给类方法和方法

你也可以写

self.__class__.addInstance

关于python - 从 __init__ 调用类方法而不重复类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47497322/

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