Calling an instance method defined without any 'self' parameter

Ibrahim Dalal ibrahimhusain007 at gmail.com
Thu Oct 4 13:38:31 EDT 2018


On Thu, Oct 4, 2018 at 10:20 PM Thomas Jollans <tjol at tjol.eu> wrote:

> On 2018-10-04 10:25, Ibrahim Dalal wrote:
> > class A:
> >     def foo():
> >         print 'Hello, world!'
> >
> > a = A()print A.foo       # <unbound method A.foo>print a.foo       #
> > <bound method A.foo of <__main__.A instance at 0x7efc462a7830>>print
> > type(A.foo) # <type 'instancemethod'>
> > a.foo()           # TypeError: foo() takes no arguments (1 given)
> > A.foo()           # TypeError: unbound method foo() must be called
> > with A instance as first argument (got nothing instead)
> >
>
> There is a way in Python 2 as well, and I'm sure someone else will
> demonstrate. I won't. It's easy enough to discover if you know that it
> should exist. I'll just tell you that Python 3 is much nicer:
>

Thought a little about it. A.__dict__['foo']() works! Thanks.


>
> Python 3 is much nicer.
>
> Cheers,
> Thomas
> --
> https://mail.python.org/mailman/listinfo/python-list
>



More information about the Python-list mailing list