接受命令并调用方法

时间:2017-02-28 22:12:14

标签: python python-3.x

我有一个包含不同方法的类。

现在我希望我的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

1 个答案:

答案 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]())