import types import inspect class Foo: def say(self): print("Foo.say") class Bar: def say(self): print("Bar.say") if __name__ == '__main__': f = Foo() b = Bar() setattr(b, 'say', types.MethodType(f.say, b)) # Should get the source of Foo.foo but instead fails. source = inspect.getsource(b.say) print(source)