我发现程序中的一个错误,出现在判断对象是否在对象列表中的代码行。这个代码行总是返回False,意味着该对象不在列表中。事实上,即使我尝试以下操作,这种情况仍然持续存在:
class myObject(object):
__slots__=('mySlot')
def __init__(self,myArgument):
self.mySlot=myArgument
print(myObject(0)==myObject(0)) # prints False
a=0
print(myObject(a)==myObject(a)) # prints False
a=myObject(a)
print(a==a) # prints True
我以前使用过deepcopy,但是对于Python来说,我没有足够的经验来知道什么时候需要它,或者机械地了解差异。我也听说过pickling,但从未使用过。有人能向我解释一下这里发生了什么吗?
哦,还有一件事。这行代码:
if x in myIterable:
这句代码很可能在x和myIterable中的每个元素之间进行相等性测试,对吧?那么如果我可以改变两个对象之间的相等关系,那么我就可以修改该行代码的输出了?是否有内置的方法支持所有内联运算符的操作?
__eq__
魔术方法。 - Michael Mior