我有一个包含不同方法的类。
现在我希望我的 main() 充当 REPL。我有不同的命令,每个命令都指的是不同的方法。 (例如,命令 1(调用方法 1))
我想打印一个提示>>> 并一次接受一个命令,然后调用该方法
我该怎么做?
class supermarket(object):
def __init__(self):
pass
def method1(self):
pass
def method2(self):
pass
...
def main():
顺便说一下,我使用的是 python 3.5
最佳答案
您可以使用 getattr()
函数按名称获取属性,然后调用生成的方法对象:
def main():
s = supermarket()
while 1:
cmd = input('>>> ') # or raw_input('>>> ') if using Python < 3
if cmd in ('q', 'quit'):
break
print(getattr(s, cmd)())
如果方法名称与命令不同,您将需要某种方式进行翻译(这样就无需使用 getattr
):
def main():
s = supermarket()
while 1:
cmd = input('>>> ')
if cmd in ('q', 'quit'):
break
print({
'command1': s.method1,
'command2': s.method2,
# ...
}[cmd]())
关于python - 接受命令并调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42519694/