Also habe ich ein Quadrat, das aus einer Reihe von Punkten besteht. Zu jedem Zeitpunkt gibt es einen entsprechenden Wert.Zugriff auf einen Wörterbuchwert über benutzerdefinierten Objektwert in Python?
Was ich tun möchte, ist ein Wörterbuch wie dieses bauen:
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
Allerdings, wenn ich später einen neuen Punkt-Objekt erstellen und versuchen, den Wert des Wörterbuchs für den Zugriff auf den Schlüssel dieses Punktes es doesn ‚t Arbeit ..
>> 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>
ich vermute, dass dies, weil python nicht zwei Objekte nicht berücksichtigt mit den gleichen Eigenschaften das gleiche Objekt sein? Gibt es einen Weg dazu? Danke
Danke! Guter Tipp über __repr__, aber ich bin ein wenig verwirrt über den Unterschied zwischen ihm und __str__? – Sam
'__repr __()' wird immer dann verwendet, wenn Sie eine Repräsentation des Objekts benötigen, ohne den String-Wert, z. innerhalb der REPL. –
'__repr__' sollte auch gültiges Python zurückgeben, das als Argument an' eval' übergeben werden kann, um ein Objekt zu erzeugen, das identisch mit demjenigen ist, das reprodiert wird. Es sollte den folgenden String zurückgeben: ''Punkt (% s,% s)'% (self._x, self._y)' –