Вот быстрый взлом, получить стек и из последнего кадра получить локальные данные для доступа к себе
class A:
def callFunction(self, obj):
obj.otherFunction()
class B:
def callFunction(self, obj):
obj.otherFunction()
import inspect
class C:
def otherFunction(self):
lastFrame = inspect.stack()[1][0]
print lastFrame.f_locals['self'], "called me :)"
c = C()
A().callFunction(c)
B().callFunction(c)
вывод:
<__main__.A instance at 0x00C1CAA8> called me :)
<__main__.B instance at 0x00C1CAA8> called me :)