【发布时间】:2015-09-02 00:06:39
【问题描述】:
我知道在 Python 中,如果你想将两个参数传递给一个函数,一个是对象,另一个指定必须在对象上调用的实例方法,用户可以轻松地传递对象本身,连同方法的名称(作为字符串)然后使用对象上的getattr 函数和字符串来调用对象上的方法。
现在,我想知道是否有一种方法(如在 C++ 中,对于那些知道的人)传递对象的位置,以及实际的方法(或者更确切地说是对方法的引用,而不是方法名称作为字符串)。一个例子:
def func(obj, method):
obj.method();
我尝试过如下传递:
func(obj, obj.method)
或作为
func(obj, classname.method)
但两者都不起作用(我知道的第二个有点远,但我还是尝试了)
我知道你也可以只定义一个只接受该方法的函数,然后调用它为
func2(obj.method)
但我特别询问您希望引用对象本身的实例,以及对要在对象上调用的所需类实例(非静态)方法的引用。
编辑:
对于那些感兴趣的人,我发现了一种非常优雅的方式,受到下面接受的答案的“启发”。我只是将func 定义为
def func(obj, method):
#more code here
method(obj, parameter); #call method on object obj
并将其称为
func(obj_ref, obj_class.method);
其中 obj_class 是 obj_ref 是其实例的实际类。
【问题讨论】:
标签: python class object parameters