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

  • Lancome USA

    Lancome USA

    30 HAZİRAN 2009
  • Thehalopianoplayer

    Thehalopiano

    4 ŞUBAT 2011
  • thepoke64738

    thepoke64738

    17 HAZİRAN 2011