SORU
25 Mayıs 2010, Salı


Python:'doğru ve iyi bir şekilde __uygulamak için Ne kadar karma__()?

__hash__() uygulamak için doğru ve iyi bir yolu nedir?

Sonra hashtables takın nesneler için kullanılan bir hashcode aka sözlükler verir işlevi bahsediyorum.

__hash__() bir tamsayı döndürür ve "" döndürülen tamsayı değerleri eşit ortak veri için dağıtılması gerektiğini sanıyorum hashtables (çarpışmaları en aza indirmek için).nesneleri binning için kullanılır gibi Bu değerleri elde etmek için iyi bir uygulama nedir? Çarpışmalar bir sorun var mı? Benim durumumda bir kapsayıcı sınıfı bazı değer vermez holding gibi davranan, yüzen küçük bir sınıf ve bir dize var.

CEVAP
25 Mayıs 2010, Salı


, __hash__() uygulanması kolay doğru bir şekilde anahtar bir dizi kullanmaktır. Hızlı olarak özel bir karma olmayacak, ama eğer ihtiyacınız varsa, o zaman muhtemelen C tipi uygulamak gerekir

İşte karma budur: bir anahtar kullanarak bir örnek

class A(object):
    def __key(self):
        return (self.attr_a, self.attr_b, self.attr_c)

    def __eq__(x, y):
        return x.__key() == y.__key()

    def __hash__(self):
        return hash(self.__key())

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Hollyscoop

    Hollyscoop

    30 Ocak 2007
  • Michelle Phan

    Michelle Pha

    18 Temmuz 2006
  • NLthomas21

    NLthomas21

    20 Mayıs 2008