我有一个包含静态方法的类,我想在该类中使用另一个静态方法来调用该方法,但它返回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
解决此问题的最佳方法是什么?
我想把代码保持在这种格式,其中有一个类包含这些静态方法,并使它们能够相互调用。
2条答案
按热度按时间xqkwcwgp1#
它不起作用,因为
method1
是abc
类的属性,而不是在全局范围内定义的东西。必须通过直接引用类来访问它:
或者使用一个classmethod而不是staticmethod,这样会给予方法访问它的类对象。我推荐使用这种方式。
vfh0ocws2#
@staticmethod不能调用其他静态方法,而**@classmethod可以调用它们。简而言之,@classmethod比@staticmethod**功能更强大。
我在我对@classmethod vs @staticmethod in Python的回答中解释了更多关于**@静态方法和@类方法的信息,还在我对What is an "instance method" in Python?的回答中解释了关于示例方法**的信息: