module with __call__ defined is not callable?
limodou
limodou at gmail.com
Tue Feb 7 22:30:58 EST 2006
On 2/8/06, adam johnson <adam.sven.johnson at gmail.com> wrote:
> Thanks for you answer.
>
> I was under the impression that you could tack methods onto an object at any
> time, your example almost works with old style classes and would with a
> function instead of a method.
>
> >>> class A:
> ... def __init__(self):
> ... self.__call__ = A.hello
> ... def hello(self):
> ... print "Hello, world!"
> ...
> >>> a = A()
> >>> a()
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> TypeError: unbound method hello() must be called with A instance as first
> argument (got nothing instead)
> >>> a(a)
> Hello, world!
> >>>
>
> So now all I need to know is why now with new style classes the special
> functions need to be defined on the class instead of attached to the
> instance at any time.
>
don't need do like above!
>>> class A:
... def __init__(self):
... A.__call__ = A.hello
... def hello(self):
... print "Hello, world!"
>>> a = A()
>>> a()
Hello, world!
You should review the bound method and unbound method.
--
I like python!
My Blog: http://www.donews.net/limodou
NewEdit Maillist: http://groups.google.com/group/NewEdit
More information about the Python-list
mailing list