【发布时间】:2022-11-18 07:48:44
【问题描述】:
我有一个有静态方法的类,我想在这个类中有另一个静态方法来调用该方法,但它返回NameError: name ''method_name' is not defined
我正在尝试做的事情的例子。
class abc():
@staticmethod
def method1():
print('print from method1')
@staticmethod
def method2():
method1()
print('print from method2')
abc.method1()
abc.method2()
输出:
print from method1
Traceback (most recent call last):
File "test.py", line 12, in <module>
abc.method2()
File "test.py", line 8, in method2
method1()
NameError: name 'method1' is not defined
解决此问题的最佳方法是什么?
我想将代码保留为这种格式,其中有一个类包含这些静态方法并让它们能够相互调用。
【问题讨论】:
-
您需要的是
classmethod,而不是staticmethod。或者,您可以对类名进行硬编码,并使用abc.method1()从method2调用它。 -
即使它们是静态的,它们也会在类后面命名空间,因此您需要类 obj。如果都是静态方法,您应该考虑使用模块。
-
啊谢谢你。我明白为什么它现在不起作用了。
标签: python python-3.x methods call static-methods