注意: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
的现有方法。
答案 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