是否可以基于关联类创建实例方法对象?

时间:2012-09-11 19:47:38

标签: python python-2.7

在构造类Foo的实例之前,我想创建一个在类Foo中定义的方法的实例方法对象,并将其分配给变量。然后我将创建一个类Foo的实例,并通过变量对新创建的实例执行实例方法对象。这可行吗?如果是这样,怎么样?谢谢。

3 个答案:

答案 0 :(得分:3)

我希望我理解你想要这样的东西:

>>> class Foo(object):
...     def __init__(self, msg):
...         self.msg = msg
...     def speak(self):
...         print(self.msg)
...      
>>> tell_me = Foo.speak
>>> tell_me(Foo("hello!"))
hello!

是的,这是可能的。 Foo.speak是一个未绑定的方法,它是一个可调用的(函数),可以将实例作为其第一个参数传递,以获得与绑定方法(例如Foo("hello").speak)相同的行为。 / p>

答案 1 :(得分:0)

你的意思是这样的:

class Foo:
    def __init__(self):
        self.g = self.f

    def f(self):
        print "foo"

foo = Foo()
foo.g()

如果我误解,请纠正我。

答案 2 :(得分:0)

在Python中,实例方法只是方便调用并将self作为第一个参数传递的函数。你应该可以这样做:

def bar(self):
    pass

class Foo(object):
   pass

x = bar
f = Foo()
bar(f)