Подсказката на Стефан беше адски полезна и напълно достатъчна.
Това с класовете предлагам да го оставим за след няколко седмици. :P
Предвид това, че ми се струва, че функцията, която си написал е равнозначна на hash(str(x))
, където x
е list
,( ако съм в грешка моля да ме извиниш), може и да стане дори и без дефиниране на класове и override-ване (както казах - с hash(str(x)))
. Най-вероятно ще се получи, тъй като:
>>> a=[1,2,3,4]
>>> b=[1,2,3,4]
>>> a is b
False
>>> hash(str(a)) is hash(str(b))
False
Т.е. хешовете на равни по "стойност", но различни обекти са също равни по стойност, но различни обекти. И съответно един сет x=(hash(str(a)),hash(str(b))
би имал len() 2. :)