class A(object):
def __init__(self, value):
self.value = value
x = A(1)
y = A(2)
q = [x, y]
q.remove(y)
Listeden önce eklenmiş ve hala referans almış olduğum belirli bir nesneyi kaldırmak istiyorum. Eşitlik testi istemiyorum. Kimlik testi istiyorum. Bu kod hem CPython hem de IronPython'da çalışıyor gibi görünüyor, ancak dil bu davranışı garanti ediyor mu yoksa sadece bir fluke mı?Karşılaştırma işleçlerini geçersiz kılan bir Python nesnesi kendisine eşit mi?
list.remove
yöntem belgelerine şudur: same as del s[s.index(x)]
, bir eşitlik sınamasının gerçekleştirildiğini ima eder. __cmp__
, __eq__
veya __ne__
'u geçersiz kılmayan bir nesne kendi başına eşit olacak mı?
Python 3 –
'__cmp__'de [Python 3'de gitti] (https://docs.python.org/3.0/whatsnew/3.0.html#ordering-comparisons) 'ın tersine davranışı tersine görünüyor. Yine de, '__eq__' kullanarak aynı efekti elde edebilirsiniz. – wim
Tanımlanmış bir __eq__ olup olmadığını merak ediyordum, Python 3 adresiyle karşılaştırıyor mu? –