Tôi phải làm gì để sử dụng các đối tượng thuộc loại tùy chỉnh làm khóa trong từ điển Python (nơi tôi không muốn "id đối tượng" đóng vai trò là khóa), vd
class MyThing:
def __init__(self,name,location,length):
self.name = name
self.location = location
self.length = length
Tôi muốn sử dụng MyThing như các khóa được coi là giống nhau nếu tên và vị trí giống nhau. Từ C # / Java tôi đã quen với việc ghi đè và cung cấp phương thức bằng và mã băm, và hứa sẽ không làm thay đổi bất cứ điều gì mà mã băm phụ thuộc vào.
Tôi phải làm gì trong Python để thực hiện điều này? Tôi có nên thậm chí?
(Trong một trường hợp đơn giản, như ở đây, có lẽ tốt hơn là chỉ đặt một (tên, vị trí) tuple làm khóa - nhưng hãy xem xét tôi muốn khóa là một đối tượng)
MyThing
, nếu chúng có cùng name
và location
để lập chỉ mục từ điển trả về cùng một giá trị, ngay cả khi chúng được tạo riêng như hai "đối tượng" khác nhau.