Quindi ho un quadrato composto da una serie di punti. In ogni punto c'è un valore corrispondente.Accesso a un valore di dizionario in base al valore dell'oggetto personalizzato in Python?
Quello che voglio fare è costruire un dizionario come questo:
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
Tuttavia, se poi creo un nuovo oggetto punto e provo ad accedere al valore del dizionario con la chiave di quel punto doesn 't lavoro ..
>> 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>
sto indovinando che questo è perché Python non considera due oggetti con le stesse proprietà di essere lo stesso oggetto? C'è un modo per aggirare questo? Grazie
Grazie! Un buon consiglio su __repr__ ma sono un po 'confuso riguardo la differenza tra questo e __str__? – Sam
'__repr __()' viene utilizzato ogni volta che è necessaria una rappresentazione dell'oggetto, senza realmente volere il valore di stringa, ad es. all'interno della REPL. –
'__repr__' dovrebbe anche restituire python valido, che potrebbe essere passato come argomento a' eval' per creare un oggetto identico a quello che viene repr'd. Dovrebbe restituire la seguente stringa: ''Punto (% s,% s)'% (self._x, self._y)' –