2016-08-03 10 views
0

オブジェクトが変更可能かどうかを確認するためにhash()を使用できるかどうか不思議ですか?ハッシュ可能なビルトインオブジェクトはPythonで変更可能ですか?

+1

実際に解決しようとしている問題は何ですか? – jonrsharpe

+2

['__hash__'](https://docs.python.org/3/reference/datamodel.html#object.__hash__)を参照してください。厳密に言うと、可能です。要件は、**等価に関係するすべてのプロパティが不変**であることです。等価性に関係しないプロパティは変更可能です。しかし、これは極端にあまりアドバイスされていません。なぜあなたは特定のオブジェクトが変更可能かどうかを知る必要がありますか? – jpmc26

+0

@jonrsharpe、大胆な文章です。 – Pythoner

答えて

2
>>> from collections.abc import Hashable 
>>> mutable = [list, bytearray, set, dict] 
>>> immutable = [int, float, complex, str, tuple, frozenset, bytes] 
>>> all(isinstance(x(), Hashable) for x in immutable) 
True 
>>> any(isinstance(x(), Hashable) for x in mutable) 
False 

すべての変更可能なオブジェクトはハッシュできません。

関連する問題