ホームページ > バックエンド開発 > Python チュートリアル > オブジェクト指向プログラミングにおける不変型と可変型: 違いは何ですか?

オブジェクト指向プログラミングにおける不変型と可変型: 違いは何ですか?

Linda Hamilton
リリース: 2024-12-17 04:57:24
オリジナル
717 人が閲覧しました

Immutable vs. Mutable Types in Object-Oriented Programming: What's the Difference?

不変型と可変型を理解する

オブジェクト指向プログラミングでは、オブジェクトは変更能力に基づいて 2 つのタイプに分類できます。不変と可変。 2 つの違いは、内部構造と、代入と変更の処理方法にあります。

不変型: オブジェクト内の値の保持

不変型は、値を保持できないオブジェクトです。作成後に変更することはできません。たとえば、Float は不変とみなされます。提供された例に見られるように、RoundFloat クラスの新しいインスタンスを作成しても、元の float オブジェクトには影響しません。これは、新しいインスタンスが独自の一意のメモリ位置を持つ別個のオブジェクトであるためです。

不変型は、メソッドが操作されても元の状態を維持します。たとえば、文字列オブジェクト (dict) を拡張したり、整数を RoundFloat クラスに渡したりしても、元のオブジェクトは変更されません。代わりに、変更を加えて新しいオブジェクトが作成されます。

可変型: オブジェクト内の動的な変更

一方、可変型は内部的にも変更できます。課題を通して。質問で述べたように、SortedKeyDict_a の例は、メソッド example() を介して内部変更を許可するオブジェクトを示しています。

メソッドを呼び出さずにセットを SortedKeyDict に渡しても、元のセットは変更されないため、エラーはトリガーされません。ただし、クラス構造で変更が許可されているため、RoundFloat で new を使用して整数を使用してもエラーは発生しません。

参照のインプレース変更と再割り当て

不変型と可変型の決定的な違いは、代入時と変更時の動作にあります。不変型はオブジェクトの参照を変更することで状態を保持しますが、可変型はオブジェクト自体を変更します。

文字列、リスト、関数、変数を使用した例を通じて、答えは、不変型が変更にもかかわらず初期のアイデンティティを維持することを強調しています。一方、可変型はインプレース変更を示し、割り当てられた変数に影響を与えます。

以上がオブジェクト指向プログラミングにおける不変型と可変型: 違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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