Así que tengo un cuadrado que se compone de una serie de puntos. En cada punto hay un valor correspondiente.¿Acceder a un valor de diccionario por valor de objeto personalizado en Python?
Lo que quiero hacer es construir un diccionario de la siguiente manera:
class Point:
def __init__(self, x, y):
self._x = x
self._y = y
square = {}
for x in range(0, 5):
for y in range(0, 5):
point = Point(x,y)
square[point] = None
Sin embargo, si más adelante se crea un nuevo objeto de punto y tratar de acceder al valor del diccionario con la clave de ese punto que doesn 't trabajo ..
>> square[Point(2,2)]
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
square[Point(2,2)]
KeyError: <__main__.Point instance at 0x02E6C378>
supongo que esto se debe pitón no tiene en cuenta dos objetos con las mismas propiedades que ser el mismo objeto? ¿Hay alguna forma de evitar esto? Gracias
Gracias! Un buen consejo sobre __repr__ pero estoy un poco confundido acerca de la diferencia entre __str__? – Sam
'__repr __()' se usa siempre que necesite una representación del objeto, sin querer realmente el valor de la cadena, p. dentro de REPL. –
'__repr__' también debe devolver python válido, que podría pasarse como un arg a' eval' para crear un objeto idéntico al que se está imprimiendo. Debería devolver la siguiente cadena: ''Point (% s,% s)'% (self._x, self._y)' –