उदाहरण के लिए, मान लीजिए कि मैं यह कर:क्या यह एक पायथन कक्षा हैश के लिए एक अच्छा विचार है?
>>> class foo(object):
... pass
...
>>> class bar(foo):
... pass
...
>>> some_dict = { foo : 'foo',
... bar : 'bar'}
>>>
>>> some_dict[bar]
'bar'
>>> some_dict[foo]
'foo'
>>> hash(bar)
165007700
>>> id(bar)
165007700
उस आधार पर, यह वर्ग की तरह अपने आईडी नंबर के रूप में टुकड़ों में बांटा जा रहा है लग रहा है। इसलिए, bar
हैशिंग को foo
या bar
या हैश मान बदलते हैं, तो मैं कक्षा को बदलता हूं, इसके बारे में चिंता करने का कोई खतरा नहीं होना चाहिए।
क्या यह व्यवहार विश्वसनीय है, या यहां कोई गठिया है?
कोई भी वर्ग जिसका * मेटाक्लास * में __hash __() फ़ंक्शन नहीं है। –
यह ध्यान दिया जाना चाहिए कि हालांकि यह "पायथन 2.6 के लिए नया क्या है" पृष्ठ में है, यह व्यवहार मेरे लिए अजगर 2.4 के तहत काम करता प्रतीत होता है। –
@ जेसन I ने सामान्य दस्तावेज के संदर्भ को बदल दिया। –