擅长:python、mysql、java
<p>你应该在这里使用简单的递归。
该方法稍微取决于子对象如何附加到父对象。</p>
<p>如果它们在列表<code>self.children</code>中(我建议您这样做),则此方法有效。
只需在类中定义以下方法:</p>
<pre><code>def findObjectByName(self, name):
if self.name == name:
return self
else:
for child in self.children:
match = child.findObjectByName(name)
if match:
return match
</code></pre>
<p><strong>编辑:</strong>
要使此操作适用于任何属性,而不仅仅是名称,请改用<code>getattr()</code>:</p>
<pre><code>def findObject(self, attr, value):
if getattr(self, attr) == value:
return self
else:
for child in self.children:
match = child.findObject(attr, value)
if match:
return match
</code></pre>
<p>只需调用<code>root.findObjectByName("Sub Child!")</code>或使用第二种方法:<code>root.findObject("name", "Sub Child!")</code></p>