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
关于python - 可以在 Python 中返回实例化器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3145652/