通常の呼び出し可能オブジェクトとメソッドをセットに追加できるのに、<some list>.append
(たとえば)できないのはなぜですか?
例えば:
>>> l = []
>>> s = set()
>>> s.add(l.append)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> type(l.append)
<type 'builtin_function_or_method'>
>>> type(map)
<type 'builtin_function_or_method'>
>>> s.add(map)
>>> def func(): print 'func'
...
>>> s.add(func)
>>> print s
set([<built-in function map>, <function func at 0x10a659758>])
l.append.__hash__()
編集:私はそれもこのエラーを与えることに気づきました