Sözlük anahtar olarak özel nesne türü
Ben Python bir sözlükte anahtarlar gibi özel bir tür benim nesneleri kullanmak için (burada istemiyorum "id" anahtarı olarak hareket etmek) , örneğin nesne . ne gerekir
class MyThing:
def __init__(self,name,location,length):
self.name = name
self.location = location
self.length = length
Adı ve konumu aynı ise kabul anahtarlar gibi MyThing kullanmak istiyorum. C#/geçersiz kılmak ve equals ve hashcode bir yöntem sağlamak zorunda, ve hashcode bağlıdır her şey değişmek için söz alıştım Java.
Ben bunu gerçekleştirmek için Python ne yapmalıyım ? Hatta kullanmalıyım ?
(Buradaki gibi basit bir durumda, belki de sadece bir (adı) yerine daha iyi bir başlık olarak anahtar - ama anahtar bir nesne olmak isterdim düşünün) olur
CEVAP
İki eklemek gerekir:
class MyThing:
def __init__(self,name,location,length):
self.name = name
self.location = location
self.length = length
def __hash__(self):
return hash((self.name, self.location))
def __eq__(self, other):
return (self.name, self.location) == (other.name, other.location)
dict documentation anahtar nesneleri bu gereksinimleri tanımlar Python, yani hashable olmalı.

Geçen anahtar kelime python parametre ...
Eclipse Java proje: türü java.lang.Nes...
C tuşu olarak özel bir sınıf türü kull...
python sözlük-değeri anahtar çiftleri ...
Genel Sözlük bir anahtar gibi bir nesn...