私は、.NET オブジェクトと、その参照型と値型のフレームワークに非常に慣れています。Python オブジェクトは .NET オブジェクトと比べてどうですか? obj1 == obj2
具体的には、 equality 、 hash-ability (つまり、dict に入れることができること)、および copyについて疑問に思っています。
たとえば、.NET の既定では、すべてのオブジェクトは参照型であり、それらの等価性とハッシュ コードはメモリ内のアドレスによって決定されます。さらに、変数を既存のオブジェクトに割り当てると、メモリ内のそのアドレスを指すようになるだけなので、コストのかかるコピーは発生しません。これはpythonでも同じようですが、完全にはわかりません。
編集:
- 平等
is
参照の等価性を==
チェックし、値の等価性をチェックします(しかし、値の等価性はオブジェクトにとって何を意味するのでしょうか?)
2000 年に書かれた effbot からいくつかの有用な情報を見つけることができました。
オブジェクト
すべての Python オブジェクトには次のものがあります。
- 一意の ID ( によって返される整数
id(x)
)- タイプ ( によって返される
type(x)
)- 一部のコンテンツ ID を変更することはできません。
タイプを変更することはできません。
一部のオブジェクトでは、コンテンツを変更できます (つまり、ID や型を変更する必要はありません)。
一部のオブジェクトでは、コンテンツを変更できません (詳細は後述)。
型は型オブジェクトによって表され、この型のオブジェクトについて詳しく知ることができます (オブジェクトが通常占有するメモリのバイト数、オブジェクトが持つメソッドなど)。