如何通过名称动态调用对象上的函数? [复制]
Posted
技术标签:
【中文标题】如何通过名称动态调用对象上的函数? [复制]【英文标题】:How to invoke a function on an object dynamically by name? [duplicate] 【发布时间】:2011-04-26 11:53:12 【问题描述】:在 Python 中,假设我有一个字符串,其中包含我知道特定对象将具有的类函数的名称,我该如何调用它?
即:
obj = MyClass() # this class has a method doStuff()
func = "doStuff"
# how to call obj.doStuff() using the func variable?
【问题讨论】:
我很好奇您为什么需要这样做。这听起来像你可能正在做一些艰难的事情。能详细说说你的情况吗? 我有一个 cli 应用程序,我想在其中接受来自命令行的命令,但不想执行以下操作:“if command = 'doThing' then obj.doThing() elseif command = 'someOtherThing' ... 等等。我想将方法添加到处理程序类,然后它们会自动在 cli 上可用 这样可以吗?这种方法在什么情况下不是一个好主意?我也有类似的情况,但我不确定我是否会走这条路。不知何故,我觉得如果我明确地使用分支会更清楚。你怎么看?谢谢! 【参考方案1】:使用getattr
内置函数。见documentation
obj = MyClass()
try:
func = getattr(obj, "dostuff")
func()
except AttributeError:
print("dostuff not found")
【讨论】:
这个链接也有上述问题gist.github.com/hygull/41f94e64b84f96fa01d04567e27eb46b的一个有用且重要的例子@以上是关于如何通过名称动态调用对象上的函数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章