我试图做一些非常丑陋的事并需要帮助。 从某种方法来说,我试图分析堆栈并确定哪个类称为此方法,如here所述。 但我想更进一步,更新调用我的方法的类实例的一些属性。
示例:
class A(object):
self.a
def some_func():
analyze()
def analyze():
frm = inspect.stack()[1]
obj = find_obj_of_frm_by_magic(frm)
obj.a = 1
答案 0 :(得分:1)
我没有使用你的" find_obj_of_frm_by_magic"我假设的方法是你链接的帖子中的逻辑。我尝试这样做,但是我明确地使用了这个类,我能够修改实例,执行以下操作。
我使用setattr
方法向类添加属性。唯一的区别是我明确地使用了这个类。
class A(object):
a = ""
def some_func(self):
analyze()
def analyze():
frm = inspect.stack()[1]
setattr(frm[0].f_globals.get('A'), 'stuff', 'boo')
a = A()
a.some_func()
# will output boo
print(a.stuff)