这是我的代码,但看起来像非python。
def __contains__(self, childName):
"""Determines if item is a child of this item"""
for c in self.children:
if c.name == childName:
return True
return False
这样做的最“python”方法是什么?使用lambda过滤器功能?由于某些原因,很少有在线示例实际上在您比较属性的对象列表中起作用,它们始终显示如何使用实际字符串列表来执行此操作,但这不是很现实。
最佳答案
我会用:
return any(childName == c.name for c in self.children)
这很短,并且与您的代码具有相同的优势,即找到第一个匹配项时它将停止。
如果经常这样做,并且速度是一个问题,则可以创建一个新属性,该属性是一组子名称,然后仅使用
return childName in self.childNames
,但是您必须更新更改子名称的方法以保持childNames为最新。