anthony tolle pkfrwatpbgmailcom greg ewing wrote well imo without seeing concrete use case hard sure feeling theres almost certainly better way thinking problem youre trying solve one doesnt require introspecting callable object find whether implementation involves self argument thats duck typing lookinsidebeforeyouleap python tutorial glossary ducktyping pythonic programming style determines objects type inspection method attribute signature rather explicit relationship type object looks like duck quacks like duck must duck emphasizing interfaces rather specific types welldesigned code improves flexibility allowing polymorphic substitution ducktyping avoids tests using type isinstance instead typically employs hasattr tests eafp programming thats code wrapping attribute access try statement essentially performing hasattr test hasattr anyway tries getattr checks exception occurs question becomes duck test objects returned descriptors test used example code works python 25 fails one case python 30 unbound methods removed writing wrapper might wrap static methods instance methods class binding distinction disappears attribute signature respective callable objects concrete example imagine wrapper using inspect module gather information stack frame passing along selected methods like flexibility thats unbound methods permitted 25 attribute signature callable objects distinct three separate cases static methods instance methods instance binding instance methods class binding class methods subset instance methods instance binding im saying unbound methods 100 essentiali learn live without themi think provided additional flexibility thats good thing opinion _______________________________________________ python3000 mailing list smsbmo9552pythonorg httpmailpythonorgmailmanlistinfopython3000 unsubscribe httpmailpythonorgmailmanoptionspython3000python300040tangomucom tue 05 aug 2008 235312 0500 python3000 case unbound methods