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

  • george sarintzotis

    george sarin

    2 Aralık 2007
  • Michael Zhang

    Michael Zhan

    8 EYLÜL 2012
  • NYLON Video

    NYLON Video

    11 Aralık 2006