这是我的代码,但看起来像非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为最新。

09-13 11:08