假设我有这样的东西:
--module1
def called():
if caller.class.attrX == 1 : ...
--module2
class ABC:
attrX = 1
def method():
called()
我想访问调用者Class属性?
我知道我必须以某种方式使用inspect,但可以准确地计算如何使用。蟒蛇3
将变量传递给函数是最好的(也是唯一的?(选项。
--module1
def called(attrX):
if attrX == 1 : ...
--module2
class ABC:
self.attrX = 1
def method():
called(self.attrX)
这似乎适用于对象变量:/如果我能让它为var类工作,它会更好/
import inspect
def say(*args, **kwargs) :
obj = inspect.currentframe().f_back.f_locals['self']
if hasattr(obj,'aaa') : print('hasit')
else : print("no")
class ABC:
aaa = 2
def test(self):
say(123)
即,如果我没有预先设置"aaa":
In [8]: a.test()
no
In [9]: ABC.aaa = 2
In [10]: a.test()
no
In [12]: a.aaa = 3
In [13]: a.test()
hasit