2013-05-29 41 views
0

我有一个对象实例需要与同一个类的实例列表进行比较,以找出具有相同属性的实例。
还提供了用于比较的属性,并且每次调用都被加载为动态的。
最后,我需要返回成功的实例(如果有的话),用于比较的属性,或失败的实例列表以及不同的字段(如果没有匹配)。函数返回的良好惯例

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) 

对于函数的返回值在不同情况下意味着不同的事实,我不舒服。
围绕此建议的约定会是什么?
此外,是否有办法将这种情况纳入理解/地图形式 - 尽管返回值的丑陋。

+4

正确的代码缩进是一个很好的约定。 – GWW

回答

2

由于您正在比较同一类的两个对象,因此第一个技巧是实现您自己的__eq__函数。

其次,让比较的结果留给调用者。你的函数应该简单地说出对象是否相等,最好的方法是返回TrueFalse

相关问题