pythonにおける「==」はそのオブジェクトの**eq()で定義された「等価性」を、「is」はそれらが同じオブジェクトかどうか**をみている、と理解しています。
例えば、
python
1>>> class MyClass(): 2... def __eq__(self, value): 3... return True 4... 5>>> a = MyClass() 6>>> b = MyClass() 7>>> a == b 8True 9>>> a is b 10False 11
はこれにのっとっており、理解できます。
一方で、
python
1>>> a = int(4) 2>>> b = int(4) 3>>> a == b 4True 5>>> a is b 6True
これについて数字として値が等しいためa==bがTrueになるのはわかるのですが、異なるint objectなのに(別々にインスタンス化されているのに)a is bがTrueになることがよくわかりません。
このあたりの仕様について説明されている資料などありましたらご紹介いただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。