我想创建包含两个函数的类,其中一个函数在类中调用另一个函数,类似:
1 class parser:
2 def foo1(a):
3 return a
4
5 def foo2(b):
6 return foo1(b*2) \\ just for example b*2, can be anything
它写道第6行有一个未解决的引用。我该如何修复它?
答案 0 :(得分:3)
您要么忘记使用@staticmethod
将方法设置为静态,要么忘记将self作为参数之一,如果您希望它们是实例方法。
对于静态方法,您需要将类更改为以下内容:
class Parser:
@staticmethod
def foo1(a):
return a
@staticmethod
def foo2(a):
return Parser.foo1(a)
我还将类名更改为上部camelcase以遵循典型风格。
这将允许您在没有实例的情况下调用函数,例如print(Parser.foo2('test'))
将打印test
。
或者如果您希望这些方法成为实例方法:
class Parser:
def __init__(self):
pass
def foo1(self, a):
return a
def foo2(self, a):
return self.foo1(a)
然后,您必须创建解析器的实例并在此实例上调用foo2,例如:
parser = Parser()
print(parser.foo2('test'))