我有一个充当树中项目的类:
class CItem( list ):
pass
我有两棵树,每棵树都以CItem为根,每个树项都有一些dict成员(比如item._test = 1)。现在我需要比较这些树。我可以建议为CItem重载一个比较运算符:
class CItem( list ):
def __eq__( self, other ):
# first compare items as lists
if not list.__eq__( self, other ): return False
# now compare dict members
if self.__dict__ != other.__dict__: return False
# seems equal
return True
现在我可以使用'=='或'!='来比较两棵树。这是一种“pythonic”方式还是这样的比较可以轻松完成?
答案 0 :(得分:3)
我的感觉就像
class CItem(list):
def __eq__(self, other):
return list.__eq__(self, other) and self.__dict__ == other.__dict__
但它基本上与您拥有的代码相同,只是用较短的符号表示。我想不出任何更实质性的改变,随便做。