Schüle Daniel wrote: > Hello all, > > >>> class Q: > ... def bar(self): > ... pass > ... > >>> import types > >>> types.UnboundMethodType is types.MethodType > True > >>> > >>> type(Q.bar) > <type 'instancemethod'> > >>> > >>> q = Q() > >>> type(q.bar) > <type 'instancemethod'> > >>> > >>> type(q.bar) is types.UnboundMethodType > True > >>> q.bar > <bound method Q.bar of <__main__.Q instance at 0x4042756c>> > >>> > > I think is not very consistent > notice q.bar is bounded although type(q.bar) > says it's types.UnboundedMethodType > what do you think? > > Regard, Daniel >
I think it's perfectly consistent: >>> class B(object): ... def bar(self): pass ... >>> B.bar <unbound method B.bar> >>> type(B.bar) <type 'instancemethod'> >>> b = B() >>> b.bar <bound method B.bar of <__main__.B object at 0xb7bd544c>> >>> type(b.bar) <type 'instancemethod'> >>> id(B.bar) -1211888788 >>> id(b.bar) -1211888788 It's the same function, whether it's bound or not. Thus, it should always have the same type. It's simply called in different ways. You can just as easily say: >>> B.bar(b) As: >>> b.bar() -Kirk McDonald -- http://mail.python.org/mailman/listinfo/python-list