Steven D'Aprano a écrit : > On Mon, 26 Nov 2007 21:48:36 +0100, Ton van Vliet wrote: > >> On Mon, 26 Nov 2007 20:14:50 +0100, Bruno Desthuilliers >> <[EMAIL PROTECTED]> wrote: >> >>>> However, I was more thinking in terms of attributes only >>> Too bad : in Python, everything's an object, so 'methods' are attributes >>> too. >> Right, but I'm sure *you* know a way to distinguish between them
Yes : reading the doc. But that's something the compiler will have hard time doing. >> (I'm >> just a beginner ;-) > > All methods are attributes. Not all attributes are methods. The usual way > to see if something is a method is to try calling it and see what > happens, but if you want a less informal test, try type(): > > >>>> type(''.join) > <type 'builtin_function_or_method'> >>>> type(Foo().foo) # with the obvious definition of Foo > <type 'instancemethod'> > Fine. Now since Python let you define your own callable types and your own descriptors, you can as well have an attribute that behave just like a method without being an instance of any of the method types - so the above test defeats duck typing. And since you can have callable attributes that are definitively not methods, you can't rely on the fact that an attribute is callable neither. -- http://mail.python.org/mailman/listinfo/python-list