有两个简单的类;一个仅具有parent属性,一个同时具有parent和children属性。这意味着,一个既parent和children继承了一个只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的父属性设置为my_parent同时消除my_child从它的老父母的孩子。
我似乎无法弄清楚如何实际设计的代码,一切我尝试将变成之间的无限循环set_parent()和add_child()或remove_child()。
我知道这个网站并不意味着其他人可以为我编写代码,但是至少有人可以给我一些提示吗?我的大脑无法解决这个问题,我已经连续思考了30分钟,却没有做任何事情。帮助赞赏!
心有法竹
一只斗牛犬
跃然一笑
相关分类