programa potencia operaciones listas lista entre diferencia diccionarios conjuntos conjunto cardinalidad python set

potencia - listas python



realizar operaciones de conjunto en clases personalizadas en python (2)

Si desea admitir - operación para su class , puede hacer algo como esto:

#!/usr/bin/python class Test(object): def __init__(self, val): self.val = val def __sub__(self, y): return Test(self.val - y.val) x = Test(10) - Test(5) print x.val

__sub__ se __sub__ cuando se realiza la operación.

Me gustaría usar la clase de conjunto incorporada de Python con una clase personalizada que he creado. Si quiero crear conjuntos que contengan instancias de mi clase personalizada, ¿qué funciones debo implementar para poder realizar pruebas, como set_a - set_b?


Funcionará de la caja, sin embargo, puede haber casos, cuando tiene sentido sobrecargar __eq__ , __ne__ y __hash__ . Por defecto, __eq__ se comparará para la identidad del objeto. Esto podría no ser lo que quieres. En ese caso, debe tener cuidado de que el objeto igual tenga valores hash iguales, e, idealmente, el objeto no igual tenga hashes diferentes (aunque esto no es necesario, simplemente reduce las colisiones). Siempre debe implementar __ne__ utilizando __eq__ , a menos que tenga un motivo específico para hacerlo de otra manera (esto se hace para garantizar la consistencia lógica).

Además, al sobrecargar __hash__ , debe tener cuidado de que el hash no cambie mientras el objeto está almacenado en un set .