我意识到我无法从其 __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
类似地,要在班级外调用静态方法,我们可以使用ClassName
或Instance
#Using classname to call f
c.f()
#Using instance to call f
c().f()
输出将为
f called
f called