编程语言
首页 > 编程语言> > Python – 我可以访问给我打电话的对象吗?

Python – 我可以访问给我打电话的对象吗?

作者:互联网

如果我有这个:

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

尽管存在设计或其他问题,但这只是一个探究性思维的问题.

注意:必须在不更改otherFunction签名的情况下完成此操作

解决方法:

如果这是出于调试目的,您可以使用inspect.currentframe():

import inspect

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

这是输出:

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

标签:python,oop,function-calls
来源: https://codeday.me/bug/20190713/1452280.html