Skip to main content
 首页 » 编程设计

python之可以在 Python 中返回实例化器吗

2025年05月04日12虾米姐

class Parent(): 
  def __init__(self): 
    self.child = Child() 
 
class Child(): 
  def __init__(self): 
    # get Parent instance 
    self.parent = self.Instantiator() 

我知道这不是适当的封装,但为了兴趣...

给定一个实例化“子”对象的“父”类,是否有可能从子内部返回实例化它的父对象?如果不是,我很好奇,是否有任何语言支持此功能?

请您参考如下方法:

要回答这个问题,不,子实例不可能1知道任何包含对它的引用的类。常见的2 处理方法是:

class Parent(object): 
    def __init__(self): 
        self.child = Child() 
        self.child._parent = self 

1 当然,这并不完全正确。正如另一位评论者指出的那样,您可以从 __init__ 方法中的执行代码中提取堆栈帧,并检查 f_locals 字典中的 self 变量对于当前正在执行的帧之前的帧。但这很复杂,而且容易出错。非常不推荐。

2 处理这个问题的稍微好一点的方法(取决于程序的具体需要)可能是要求父级将自身传递给子级,如下所示:

class Parent(object): 
    def __init__(self): 
        self.child = Child(self) 
 
class Child(object): 
    def __init__(self, parent): 
        self._parent = parent