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" hoạt động như khóa), ví dụ:Đối tượng của loại tùy chỉnh là khóa từ điển
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 làm khóa được coi là giống nhau nếu tên và vị trí giống nhau. Từ C#/Java, tôi được sử dụng để ghi đè và cung cấp phương thức equals và hashcode, và hứa sẽ không thay đổi bất cứ điều gì hashcode phụ thuộc vào.
Tôi phải làm gì trong Python để thực hiện việc này? Tôi có nên không?
(Trong một trường hợp đơn giản, giống như ở đây, có lẽ nó muốn được tốt hơn để chỉ cần đặt một (tên, địa điểm) tuple như chìa khóa - nhưng xem xét Tôi muốn chìa khóa để trở thành một đối tượng)
Có gì sai với việc sử dụng băm? –
Có lẽ vì anh ta muốn hai 'MyThing', nếu họ có cùng' tên' và 'vị trí', để 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 biệt như hai" đối tượng "khác nhau. – Santa
"có lẽ tốt hơn là chỉ cần đặt một (tên, vị trí) tuple là chìa khóa - nhưng xem xét tôi muốn chìa khóa là một đối tượng)" Bạn có nghĩa là: một đối tượng không COMPOSITE? – eyquem