在不重复classnam的情况下从\uyu init\uuu调用一个classmethod

2024-07-01 07:11:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从__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”重复出现。在

更换管路

^{pr2}$

cls.addInstance(name, self)

导致NameError: name 'cls' is not defined。在


Tags: 方法nameselfobjfooinitisdef
1条回答
网友
1楼 · 发布于 2024-07-01 07:11:30

只要你不把addInstance重写为简单的方法

self.addInstance 

也可以。在

<><> E> CLS Eu> EME>是约定的,不同于C++ +EM >这是EEM>,这是标准的。在

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

你也可以写信

^{pr2}$

相关问题 更多 >

    热门问题