所以我有以下类对象:
class Bond(object):
def __init__(self, Atom1=None, Atom2=None):
self.atoms = [Atom1, Atom2]
其中Atom1和Atom2是可变对象。
我有:
>>> first_bond
Bond(Atom1, Atom2)
>>> second_bond
Bond(Atom1, Atom3)
>>> third_bond
Bond(Atom2, Atom1)
并且还有:
>>> bonds
[first_bond, second_bond, third_bond]
如果您意识到,first_bond
和third_bond
是相同的,因为一个与另一个相反,这是:
>>> first_bond == third_bond[::-1]
True
所以我的问题是如何实现一个函数或者只能过滤不同对象的东西,这样我的最终bonds
就是:
>>> bonds
[first_bond, second_bond]
我已经读过,使用__eq__
和__hash__
方法可能是一种解决方案,然后使用set(bonds)
。但由于Atoms
是可变对象,我不知道这是否可能。