मैं सेट में उसी हैश ऑब्जेक्ट को जोड़ने से रोकने के लिए set()
और __hash__
विधि python
क्लास का उपयोग कर रहा हूं। python data-model document के अनुसार, set()
एक ही वस्तु के समान हीश ऑब्जेक्ट पर विचार करें और बस उन्हें एक बार जोड़ें।पायथन - कक्षा __hash__ विधि और सेट
लेकिन यह नीचे के रूप में अलग अलग बर्ताव करता है:
class MyClass(object):
def __hash__(self):
return 0
result = set()
result.add(MyClass())
result.add(MyClass())
print(len(result)) # len = 2
जबकि स्ट्रिंग मान के मामले में, यह सही ढंग से काम करता है।
result.add('aida')
result.add('aida')
print(len(result)) # len = 1
मेरा प्रश्न है: क्यों एक ही हैश ऑब्जेक्ट सेट में समान नहीं हैं? __hash__
और __eq__
: