In [21]: def hello(self): ....: print self.name ....: In [22]: class Foo(object): ....: name = 'blah' ....: In [23]: goo = Foo() go In [24]: goo.hi = hello In [25]: goo.hi Out[25]: <function hello at 0x103985aa0> In [26]: goo.hi() TypeError Traceback (most recent call last) TypeError: hello() takes exactly 1 argument (0 given)
>>> import types >>> >>> def hello(self): ... print self.name ... >>> class Foo(object): ... name = 'blah' ... >>> goo = Foo() >>> goo.hi = types.MethodType(hello, Foo) >>> >>> goo.hi() blah
In [27]: class Foo(object): ....: pass ....: In [28]: def hello(self): ....: print self ....: In [29]: blah = Foo() In [30]: blah.hello = hello.__get__(blah, Foo) In [31]: blah.hello() <__main__.Foo object at 0x10397f650>