ホームページ > バックエンド開発 > Python チュートリアル > 連続する名前のない Python クラス インスタンスが同じオブジェクト ID を共有するのはなぜですか?

連続する名前のない Python クラス インスタンスが同じオブジェクト ID を共有するのはなぜですか?

Susan Sarandon
リリース: 2024-12-18 13:46:11
オリジナル
809 人が閲覧しました

Why Do Consecutive, Unnamed Python Class Instances Share the Same Object ID?

結果として生じるクラス インスタンスの同じオブジェクト ID

名前を割り当てずにクラスの複数のインスタンスを作成すると、Python は同じ ID をそれらすべて。一見すると驚くかもしれないこの動作は、Python のオブジェクトの存続期間の概念によるものです。

オブジェクトの ID は、オブジェクトの存続期間中のみその一意性を保証します。この例では、someClass() が 1 つのステートメントの範囲内で複数回呼び出されます。呼び出しごとに新しいオブジェクトが作成されます。ただし、これらのオブジェクトは変数に割り当てられておらず、ステートメントの実行が終了するとすぐにスコープが終了するため、ガベージ コレクションに使用できるようになります。

Python のデフォルト実装である CPython では、ガベージ コレクションは参照カウントを使用します。さらに、オブジェクトの ID はそのメモリ位置に関連付けられます。この要素の組み合わせは、someClass() の結果として生じるインスタンスが同じ ID を共有する理由を説明しています。新しいオブジェクトが同じ関数スコープ内で作成されると、メモリが割り当て解除されて再利用されます。

この動作に対処し、クラスに個別の ID を確保するためです。インスタンスの場合は、オブジェクトをデータ構造内に保持するか、クラス内にカスタム ID スキームを実装することを検討してください。

以上が連続する名前のない Python クラス インスタンスが同じオブジェクト ID を共有するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート