मैं hash
हुड के तहत पायथन फ़ंक्शन को समझने की कोशिश कर रहा हूं । मैंने एक कस्टम वर्ग बनाया जहाँ सभी उदाहरण समान हैश मान लौटाते हैं।
class C:
def __hash__(self):
return 42
मैंने अभी यह माना है कि उपरोक्त वर्ग का केवल एक उदाहरण dict
किसी भी समय हो सकता है , लेकिन वास्तव में एक dict
ही एचएच के साथ कई तत्व हो सकते हैं।
c, d = C(), C()
x = {c: 'c', d: 'd'}
print(x)
# {<__main__.C object at 0x7f0824087b80>: 'c', <__main__.C object at 0x7f0823ae2d60>: 'd'}
# note that the dict has 2 elements
मैंने थोड़ा और प्रयोग किया और पाया कि अगर मैं __eq__
इस तरह की विधि को ओवरराइड करता हूं कि वर्ग के सभी उदाहरण बराबर हैं, तो dict
केवल एक उदाहरण की अनुमति देता है।
class D:
def __hash__(self):
return 42
def __eq__(self, other):
return True
p, q = D(), D()
y = {p: 'p', q: 'q'}
print(y)
# {<__main__.D object at 0x7f0823a9af40>: 'q'}
# note that the dict only has 1 element
इसलिए मैं यह जानने के लिए उत्सुक हूं कि एक dict
ही हैश के साथ कई तत्व कैसे हो सकते हैं।