我是这里的新手,而python很新!
我们完成了一项作业,而我已经能够完成其余的工作,但是仍然存在一个问题:
如果我有这样的树层次结构:
root = [
parent1 = [
child1,
child2 = [
sub_child
]
child3
],
parent2 = [
child1,
child2
]
]
它们都是一个名为
TreeHierarchyClass
的类的实例,并且都具有name属性,如何找到输入名称的那个?我尝试使用for循环,但是无法知道我需要多少个循环?获得名称很容易:
name = input("Enter name: ")
if name == TreeHierarchyObject.name:
print("Found it!")
但是如何遍历对象呢?
最佳答案
您应该在这里使用简单的递归。
该方法在某种程度上取决于您的子对象如何附加到父对象。
如果他们在列表self.children
中,则此方法有效,我建议这样做。
只需在您的类中定义以下方法:
def findObjectByName(self, name):
if self.name == name:
return self
else:
for child in self.children:
match = child.findObjectByName(name)
if match:
return match
编辑:
要使此属性适用于任何属性,而不仅仅是名称,请使用
getattr()
: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
只需调用
root.findObjectByName("Sub Child!")
或使用第二种方法:root.findObject("name", "Sub Child!")