Python - Can I access the object who call me?

function-calls, oop, python

Solution

If this is for debugging purposes you can use inspect.currentframe():

import inspect

class C:
    def otherFunction(self):
        print inspect.currentframe().f_back.f_locals

Here is the output:

>>> A().callFunction(C())
{'self': <__main__.A instance at 0x96b4fec>, 'obj': <__main__.C instance at 0x951ef2c>}

Problem

If I have this: ``` class A: def callFunction(self, obj): obj.otherFunction() class B: def callFunction(self, obj): obj.otherFunction() class C: def otherFunction(self): # here I wan't to have acces to the instance of A or B who call me. ... # in main or other object (not matter where) a = A() b = B() c = C() a.callFunction(c) # How 'c' know that is called by an instance of A... b.callFunction(c) # ... or B ``` Despite the design or other issues, this is only a question of an inquiring mind. Note: This has to be done without changing `otherFunction` signature

Original source