gpt4 book ai didi

python - 如何获取实例化类的对象

转载 作者:太空宇宙 更新时间:2023-11-04 03:34:45 24 4
gpt4 key购买 nike

我有以下情况:我有多个类在我的应用程序中随处实例化。我希望每个对象都从父对象获取一个 id(说我有对象 B 和对象 B 实例化对象 C 然后对象 B 是对象 C 的父对象,但对象 C 也可以是其他对象的父对象,我不是在说继承)。

我可以保证的是所有类都继承自相同的基类,比方说 rootobject 类,我可以解决这个问题。

我真的想避免重构对象实例化,因为有大量的类。在实例化对象时传递 self 参数不是一种选择,当您拥有大型代码库时,这太耗时了。

我想到了一种查看调用堆栈帧并尝试从那里获取实例化“我”的类的方法。它应该是前一帧,但这个实现太老套了。

有什么想法吗?

最佳答案

这是一个非常 hacky 但可行的解决方案:

import inspect

def get_instantiator():
# The instantiator is two frames back.
frame = inspect.currentframe().f_back.f_back
frame_args = inspect.getargvalues(frame)
return frame_args.locals[frame_args.args[0]]

class A:
def __init__(self):
self.b = B()

class B:
def __init__(self):
self.parent = get_instantiator()

a = A()
print(a.b.parent == a)

它找到传递给实例化类的 self 参数。

关于python - 如何获取实例化类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29635060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com