SORU
4 ŞUBAT 2011, Cuma


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
4 ŞUBAT 2011, Cuma


İ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ı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • erikbjgn's channel

    erikbjgn's c

    12 Mayıs 2008
  • Goran Dimov

    Goran Dimov

    1 HAZİRAN 2014
  • pleated-jeans

    pleated-jean

    6 HAZİRAN 2013