Vì vậy, tôi có một hình vuông được tạo thành từ một loạt các điểm. Tại mỗi điểm có một giá trị tương ứng.Truy cập giá trị từ điển theo giá trị đối tượng tùy chỉnh bằng Python?
Những gì tôi muốn làm là xây dựng một từ điển như thế này:
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
Tuy nhiên, nếu sau này tôi có thể tạo một đối tượng điểm mới và cố gắng truy cập vào các giá trị của từ điển với phím của thời điểm đó nó doesn 't work ..
>> 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>
Tôi đoán rằng điều này là do python không xem xét hai đối tượng có cùng thuộc tính là cùng một đối tượng? Có cách nào để khắc phục điều này? Cảm ơn
Cảm ơn! Lời khuyên tốt về __repr__ nhưng tôi hơi bối rối về sự khác biệt giữa nó và __str__? – Sam
'__repr __()' được sử dụng bất cứ khi nào bạn cần một đại diện của đối tượng, mà không thực sự muốn giá trị chuỗi, ví dụ: trong REPL. –
'__repr__' cũng phải trả về giá trị python hợp lệ, có thể được chuyển thành arg để' eval' để tạo một đối tượng giống với đối tượng đang được repr'd. Nó sẽ trả về chuỗi sau: ''Điểm (% s,% s)'% (self._x, self._y)' –