3 ms·
Also, i forgot to add, your code snippet doesn't work. Some magic goes into the self binding. In [21]: def hello(self): ....: print self.name ..
by grot 15y ago
Also, i forgot to add, your code snippet doesn't work. Some magic goes into the self binding.
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)
- storborg 15y agoUse types.MethodType for that: >>> import types >>> >>> def hello(self): ... print self.name ... >>> class Foo(object): ... name = 'blah' ... >>> goo = Foo() >>> goo.hi = types.MethodType(hello, Foo) >>> >>> goo.hi() blah Edit: pre-2.6 you'd use "new.instancemethod()"
- grot 15y agoYes, or alternatively I believe 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>