【发布时间】:2020-06-20 00:23:15
【问题描述】:
我有一个带有构造函数的类、两个其他方法和一个包含这两个方法名称的成员列表。
class Foo():
def __init__(self):
self.methods = ["self.foo", "self.bar"]
def foo(self):
print("foo")
return 0
def bar(self):
print("bar")
return 0
我有一个将函数作为参数的函数,像这样。
myFunction(func)
该函数具有全局范围,可以这样使用。
myFunction(self.foo)
我想遍历 self.methods 列表中的项目并为每个方法名称调用函数,但正如预期的那样,传递的是字符串而不是方法本身。我如何通过像上面的例子这样的方法,所以像self.foo 而不是"self.foo"?
【问题讨论】:
-
您的
myFunction作用域在哪里?它是Foo的一部分还是独立的?如果它要尝试按名称调用函数,是否有任何理由不接受要使用的实例的参数或...? -
@JonClements myFunction 具有全局范围。你所说的要使用的东西的实例是什么意思?
-
myFunction如何知道它应该查看哪些对象的方法并循环并运行这些方法? -
我仍然在为你在这里真正想要实现的目标而苦苦挣扎......但我会猜测你有一个
foo = Foo()(和self.methods = ['foo', 'bar']) ,那么你可以做for f in foo.methods: getattr(foo, f)()... -
@JonClements
getattr()正是我要找的,感谢您的帮助!
标签: python python-3.x string list oop