在构建时调用未指定的方法

时间:2017-05-26 14:54:27

标签: python python-3.x class methods

注意:A similar question已经存在,虽然是针对C#。

假设我的代码如下所示:

class SomeClass:

    def __init__(self):
         pass

    def do(self):
        print("a")

class SomeOtherClass:

    def __init__(self):
         pass

    def do(self):
        print("b")

class B:

    def __init__(self):
         self.SomeClass = SomeClass()  
         self.SomeOtherClass = SomeOtherClass()

def __main__():
    myclass = B()
    desired_class = str(input("The method of which class do you want to execute? "))
    myclass.desired_class.do() 

在构建时我不会知道将调用SomeClass的方法。 If-then-else如果你有200种方法而且只有2种方法也不是很整齐。

如何在python中最有效地完成这项工作?

注意:method始终是SomeClass的现有方法。

1 个答案:

答案 0 :(得分:5)

getattr怎么样?

class SomeClass:
    def bark(self):
        print("woof")

myclass = SomeClass()
method = input("What do you want to execute? ")
getattr(myclass, method)()

结果:

C:\Users\Kevin\Desktop>py -3 test.py
What do you want to execute? bark
woof