TreeStructure
相互にリンクされた親オブジェクトと子オブジェクトを作成できる (TS) クラスをコーディングしています。すべての TS オブジェクトには、プロパティでm_parent
制御される属性と、この親のすべての子を保持するリストがあります。子を親のリストに追加すると、その子も独自のリストに追加されますか? ここに私が持っているものがあります:parent
children
children
children
ROOT = "__ROOT__"
class TreeStructure:
def __init__(self, parent=ROOT, children=[]):
self.children = children
self.parent = parent
@property
def parent(self):
'''Returns m_parent'''
if hasattr(self, "m_parent"):
return self.m_parent
else:
return None
@parent.setter
def parent(self, parent=ROOT):
'''Sets m_parent'''
if type(parent) == type(self):
if self.parent:
del self.parent
self.m_parent = parent
self.m_parent.children.append(self)
elif parent == ROOT:
if self.parent:
del self.parent
self.m_parent = ROOT
else:
raise TypeError("Parent's type %s did not match objects type %s"
%(type(parent), type(self)))
@parent.deleter
def parent(self):
'''Deletes m_parent'''
if self.parent:
if self.parent != ROOT:
self.m_parent.children.remove(self)
del self.m_parent
そして、2 つの単純なオブジェクトを作成することで、動作するはずです。しかし、そうではありません。
a = TreeStructure()
b = TreeStructure(a)
問題は 25 行目に表示されself.m_parent.children.append(self)
ます。その行の両側に印刷を追加すると、両方が表示されprint(self.m_parent.children)
、追加行の前にprint(self.children)
空のリストが印刷されます。[]
追加行の後にプリントを追加すると、両方のプリントに が表示されますが[<__main__.TreeStructure object at 0x...>]
、これは子ではなく親でのみ発生するはずです?