从调用的函数访问Class属性



假设我有这样的东西:

--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

相关内容

  • 没有找到相关文章

最新更新