Ben var bana başımı çizik yapıyor Aşağıdaki kod, -__eq__ çağrılmıyorken nesneyim neden bir listeden düzgün şekilde kaldırılıyor?
before [a, b, c, d]
comparing a to d (False)
comparing b to d (False)
comparing c to d (False)
after [a, b, c]
Neden comparing d to d (True)
çıkışı değil eq()
edilir - şu çıktıyı verir
class Element:
def __init__(self, name):
self.name = name
def __repr__(self):
return self.name
def eq(self, other):
print('comparing {} to {} ({})'.format(self.name,
other.name,
self.name == other.name))
return self.name == other.name
Element.__eq__ = eq
elements = [
Element('a'),
Element('b'),
Element('c'),
Element('d')
]
print('before {}'.format(elements))
elements.remove(elements[3])
print('after {}'.format(elements))
?
Element
sınıfında basitçe uygulamak yerine __eq__
numaralı düzeltme ekini kullanmamın nedeni, kullanıyorum kitaplıklarımdan birini uygulayabilmem için nasıl bir düzeltme ekinin çalıştığını test etmem.
Teşekkür ederiz. Çok açık bir cevap. –