আমি 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
একই হ্যাশ সহ একাধিক উপাদান থাকতে পারে।