que define una clase:Python hash() no puede manejar un entero largo?
class A: ''' hash test class >>> a = A(9, 1196833379, 1, 1773396906) >>> hash(a) -340004569 This is weird, 12544897317L expected. ''' def __init__(self, a, b, c, d): self.a = a self.b = b self.c = c self.d = d def __hash__(self): return self.a * self.b + self.c * self.d
¿Por qué, en el doctest, función hash() da un entero negativo?
Nitpick: (12544897317 & 0xFFFFFFFF) - (1 << 32) no es -340004569; es -340004571. Python realmente llega al número de 32 bits mediante * re-hashing *; es decir, cálculo hash (12544897317). Esto es mejor porque no solo descarta los bits de orden superior del valor hash original, sino que los mezcla en el valor hash final. –
@Mark Dickinson, uh-huh, gracias – inv