INIT运行时不可用



我意识到我无法从其 __init__方法调用类静态方法。

class c():
    def __init__(self):
        f()
    @staticmethod
    def f():
        print("f called")
c()

给出NameError: name 'f' is not defined

为什么找不到静态方法?

这仅仅是因为python在全局名称空间中搜索一个称为 f的函数。

要引用类'f方法,您需要确保Python在适当的名称空间中查看。只需预先准备一个self.

class c():
    def __init__(self):
        self.f()  # <-
    @staticmethod
    def f():
        print("f called")
c()

导致

f called

由于 f()是类的方法,因此您可以使用 c.f()self.f()来调用

class c():
    def __init__(self):
        #Call static method using classname
        c.f()
        #Call static method using self
        self.f()
    @staticmethod
    def f():
        print("f called")
c()

然后输出将为

f called
f called

类似地,要在班级外调用静态方法,我们可以使用ClassNameInstance

#Using classname to call f
c.f()
#Using instance to call f
c().f()

输出将为

f called
f called

最新更新