我有一个包含不同方法的类。
现在我希望我的main()充当REPL。我有不同的命令,每个命令指的是不同的方法。 (例如,command1(call method1))
我想将提示打印为>>> 并且一次接受一个命令然后调用方法
我该怎么做?
class supermarket(object):
def __init__(self):
pass
def method1(self):
pass
def method2(self):
pass
...
def main():
顺便说一句,我使用的是python 3.5
答案 0 :(得分:3)
您可以使用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]())