Tôi đang sử dụng phương thức set()
và __hash__
của lớp python
để tránh thêm cùng một đối tượng băm trong tập hợp. Theo python data-model document, set()
xem xét cùng một đối tượng băm giống như đối tượng và chỉ cần thêm chúng một lần.Phương thức Python - class __hash__ và đặt
Nhưng nó hoạt động khác nhau như sau:
class MyClass(object):
def __hash__(self):
return 0
result = set()
result.add(MyClass())
result.add(MyClass())
print(len(result)) # len = 2
Trong khi trong trường hợp giá trị chuỗi, nó hoạt động một cách chính xác.
result.add('aida')
result.add('aida')
print(len(result)) # len = 1
Câu hỏi của tôi là: tại sao các đối tượng băm giống nhau không giống nhau?