我想创建一个包含两个函数的类,其中一个函数调用另一个函数,例如:
class Parser:
def foo(a):
return a
def bar(b):
return foo(b * 2)
Run Code Online (Sandbox Code Playgroud)
这会出错:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 6, in bar
NameError: name 'foo' is not defined
Run Code Online (Sandbox Code Playgroud)
@staticmethod如果您希望它们成为实例方法,您要么忘记将方法设置为静态方法,要么忘记将 self 作为参数之一。
对于静态方法,您需要将类更改为以下内容:
class Parser:
@staticmethod
def foo(a):
return a
@staticmethod
def bar(a):
return Parser.foo(a)
Run Code Online (Sandbox Code Playgroud)
我还将类名更改为大写驼峰以遵循典型样式。
这将允许您在没有实例的情况下调用函数,例如print(Parser.bar('test'))将 print test。
或者,如果您希望方法成为实例方法:
class Parser:
def __init__(self):
pass
def foo(self, a):
return a
def bar(self, a):
return self.bar(a)
Run Code Online (Sandbox Code Playgroud)
然后,您必须创建解析器的实例并在此实例上调用 bar,例如:
parser = Parser()
print(parser.bar('test'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3653 次 |
| 最近记录: |