import inspect
def print_id( obj) :
print "{} => {}" .format ( id ( obj) , obj)
def getmember( obj, name) :
#members = dict(inspect.getmembers(obj))
#return members[name]
return [ member
for _name, member in inspect .getmembers ( obj)
if name == _name] [ 0 ]
class Foo( object ) :
def bar( self ) : pass
foo = Foo( )
m1 = foo.bar
m2 = getattr ( foo, 'bar' )
m3 = getmember( foo, 'bar' )
print_id( m1)
print_id( m2)
print_id( m3)
aW1wb3J0IGluc3BlY3QKCmRlZiBwcmludF9pZChvYmopOgogICAgcHJpbnQgInt9ID0+IHt9Ii5mb3JtYXQoaWQob2JqKSwgb2JqKQoKZGVmIGdldG1lbWJlcihvYmosIG5hbWUpOgogICAgI21lbWJlcnMgPSBkaWN0KGluc3BlY3QuZ2V0bWVtYmVycyhvYmopKQogICAgI3JldHVybiBtZW1iZXJzW25hbWVdCiAgICByZXR1cm4gW21lbWJlciAKICAgICAgICAgICAgZm9yIF9uYW1lLCBtZW1iZXIgaW4gaW5zcGVjdC5nZXRtZW1iZXJzKG9iaikgCiAgICAgICAgICAgIGlmIG5hbWUgPT0gX25hbWVdWzBdCgpjbGFzcyBGb28ob2JqZWN0KToKICAgIGRlZiBiYXIoc2VsZik6IHBhc3MKCmZvbyA9IEZvbygpCgptMSA9IGZvby5iYXIKbTIgPSBnZXRhdHRyKGZvbywgJ2JhcicpCm0zID0gZ2V0bWVtYmVyKGZvbywgJ2JhcicpCgpwcmludF9pZChtMSkKcHJpbnRfaWQobTIpCnByaW50X2lkKG0zKQo=