Python中文
首页
教程
问答
标签
搜索
登录
注册
Python TreeStructure(父级和子级)类,子级被附加到它自己的子级上?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在编写一个<code>TreeStructure</code>(TS)类,它允许我创建相互链接的父对象和子对象。每个TS-object都有<code>m_parent</code>属性,该属性由<code>parent</code>属性控制,而且它们还有{<cd4>}列表,该列表包含父对象的所有子对象。每当我把一个孩子添加到它的父母的<code>children</code>列表时,它也会被添加到它自己的<code>children</code>列表中?以下是我所拥有的:</p> <pre><code>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.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(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 </code></pre> <p>现在通过创建两个简单的对象,它应该可以工作了。但事实并非如此</p> ^{pr2}$ <p>问题出现在第25行,<code>self.m_parent.children.append(self)</code>。如果我在那行的两边都添加print,我会看到<code>print(self.m_parent.children)</code>和{<cd9>}都在append行之前打印一个空列表<code>[]</code>。现在,如果我在append行后面添加打印,两个打印都将显示<code>[<__main__.TreeStructure object at 0x...>]</code>,这应该只发生在父对象而不是子对象上?在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您已经被旧样式的类(不支持描述符,例如<code>@property</code>s)所困扰。您应该使用:</p> <pre><code>class TreeStructure(object): </code></pre> <p>这样做之后,你的代码对我有用</p> <h3>编辑:</h3> <p>我正在使用python2.7进行测试。在3.x中,所有类都是新样式的。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
10 回答
如何添加表示整数的擦边字符串?
2 回答
如何添加要在Bokeh中使用的新font.ttf文件?
1 回答
如何添加要显示的矩阵XY轴编号和XY轴
1 回答
如何添加计数?
1 回答
如何添加计数器函数?
10 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
6 回答
如何添加计数器来跟踪while循环中的月份和年份?
3 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
1 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
7 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
2 回答
如何添加评论拉梅尔亚姆
6 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
1 回答
如何添加谷歌地点自动完成到Flask?
4 回答
如何添加超时、python discord bot
3 回答
如何添加超过1dp的检查
1 回答
如何添加距离方法
4 回答
如何添加跟随游戏的敌人精灵
4 回答
如何添加路径以便python可以找到程序?
1 回答
如何添加身份验证/安全性以使用happybase访问HBase?
8 回答