有两个简单的类;一种只有parent
属性,一种同时具有parent
和children
属性。这意味着具有 bothparent
和的那个children
继承自具有 only 的那个parent
。
这是只有parent
属性的类。让我们称之为它,Child
因为它只能是一个孩子,而不是一个父母。我将使用一种方法set_parent()
使其更清晰,但我会在我的实际代码中使用 setter。
class Child(object):
def __init__(self, parent=None):
self.__parent = None
self.set_parent(parent)
def set_parent(self, parent):
# Remove self from old parent's children
if self.__parent:
self.__parent.remove_child(self)
# Set new parent
self.__parent = parent
# Add self to new parent's children
if self.__parent:
self.__parent.add_child(self)
该代码非常有意义,并且似乎工作得很好。如果这个Parent
类看起来像这样简单:
class Parent(Child):
def __init__(self, parent=None):
super(Parent, self).__init__(parent)
self.__children = []
def add_child(self, child):
if child not in self.__children:
self.__children.append(child)
def remove_child(self, child):
if child in self.__children:
self.__children.remove(child)
但是,我希望能够调用my_parent.add_child(my_child)
并将my_child
' 的 parent 属性设置为,my_parent
同时my_child
从它的旧父母的孩子中删除。
我似乎无法弄清楚如何实际设计代码,我尝试的一切都会变成set_parent()
and add_child()
or之间的无限循环remove_child()
。
我知道这个网站不适合其他人为我编写代码,但至少有人可以给出一些提示吗?我的大脑无法处理这个问题,我已经连续思考了 30 分钟,但什么都没做。帮助表示赞赏!