我有一个对象实例需要与同一个类的实例列表进行比较,以找出具有相同属性的实例。
还提供了用于比较的属性,并在每次调用时动态加载
最后,我需要返回成功的实例(如果有的话),用于比较的属性,或失败实例的列表以及不同的字段(如果没有匹配)。
def func(tomatch,listofprospects):
attrs = <load dynamically>
for l in listofprospects:
failues=list()
mismatch=match(tomatch,l,attrs)#returns any mismatched fields for this element
if not mismatch:
return (l,attrs)
else:
filures.extend(dict(l.name(),mismatch))
return(failures,attrs)
我不满意这样一个事实,即函数的返回值对于不同的情况意味着不同
围绕这个推荐的惯例是什么?
此外,可以有一种方法将其纳入理解/地图形式 - 尽管返回值的丑陋。
答案 0 :(得分:2)
在比较同一个类的两个对象时,第一个提示是实现自己的__eq__
函数。
其次,让比较的结果留给来电者。您的函数应该简单地说明对象是否相等,最好的方法是返回True
或False
。