def do_something(obj, func):
obj.func()
我的问题是如何在func
上致电obj
? func
是obj
的函数。这甚至可能吗?
答案 0 :(得分:5)
如果func
是obj
的实际功能,您可以简单地调用它:
func()
一个例子:
class Klass(object):
def say_hi(self):
print 'hi from', self
func = Klass().say_hi
func() # hi from <__main__.Klass object at 0x024B4D70>
否则,如果func
是函数的名称(字符串),那么这将得到它并调用它:
getattr(obj, func)()
答案 1 :(得分:0)
无论如何func
是obj
上定义的方法,因此您可以使用func()
而不是obj.func()
来直接调用它,因为func
本身就是{{1}根据你的问题。
我已在obj.func
上执行的以下2个示例中清除了这一点。
首先我定义了一个简单的类,然后我尝试根据这个问题访问它的实例方法。
Python interactive termainal
最后
>>> # Defining class
...
>>> class MyClass(object):
... def __init__(self):
... self.name = "Rishikesh Agrawani"
... self.age = 25
... def doStuff(self):
... print "DETAILS:\n"
... print "NAME: %s" % (self.name)
... print "AGE : %d" % (self.age)
...
>>> # Instantiation
...
>>> obj = MyClass()
>>> func = getattr(obj, "doStuff");
>>> func()
DETAILS:
NAME: Rishikesh Agrawani
AGE : 25
>>>