ホームページ >バックエンド開発 >Python チュートリアル >Pythonのクラス変数とインスタンス変数の違い
Python には、クラス変数とインスタンス変数の 2 種類の変数があります。これら 2 種類の変数の違いを理解することは、効率的で体系化されたコードを作成するために重要です。これは他の言語とは少し異なります。
クラス変数は静的変数とも呼ばれ、クラスのすべてのインスタンスによって共有される変数です。これらはメソッドやコンストラクターの外部で定義され、特定のインスタンスではなくクラス自体に関連付けられます。
クラス変数を宣言するには、クラス定義内で = 演算子を使用して値を代入するだけです。以下に例を示します:
class MyClass: class_variable = "This is a class variable" print(MyClass.class_variable) # Output: This is a class variable obj1 = MyClass() obj2 = MyClass() print(obj1.class_variable) # Output: This is a class variable print(obj2.class_variable) # Output: This is a class variable
クラス変数はクラスのすべてのインスタンスで共有されることに注意してください。 1 つのインスタンスでクラス変数の値を変更すると、他のすべてのインスタンスにも影響します。
一方、インスタンス変数は、クラスの各インスタンスに固有の変数です。これらはクラスのインスタンスが作成されるときに作成され、その特定のインスタンスに関連付けられます。
インスタンス変数を宣言するには、クラスのメソッドまたはコンストラクター内でインスタンス変数を定義する必要があります。以下に例を示します:
class MyClass: def __init__(self, instance_variable): self.instance_variable = instance_variable obj1 = MyClass("obj1 instance variable") print(obj1.instance_variable) # Output: obj1 instance variable obj2 = MyClass("obj2 instance variable") print(obj2.instance_variable) # Output: obj2 instance variable
この例では、instance_variable は MyClass クラスのインスタンス変数です。これは __init__ (コンストラクター) メソッドで初期化され、self キーワードを使用してアクセスできます。
クラスの各インスタンスには、インスタンス変数の独自のコピーがあることに注意してください。 1 つのインスタンスでインスタンス変数の値を変更しても、他のインスタンスの値には影響しません。
クラス変数とインスタンス変数の主な違いは、クラス変数はクラスのすべてのインスタンスで共有されるのに対し、インスタンス変数は各インスタンスに固有であることです。
クラス変数は、クラスのすべてのインスタンス間でデータを共有する場合に便利です。たとえば、クラス変数を使用して、作成されたインスタンスの数を追跡したり、すべてのインスタンスで使用される定数値を保存したりできます。
一方、インスタンス変数は、各インスタンスに固有のデータを保存する場合に便利です。たとえば、インスタンス変数を使用して、人の名前や年齢を保存できます。
この記事が Python のクラス変数とインスタンス変数の理解に役立つことを願っています。他にご質問がございましたら、お知らせください。
以上がPythonのクラス変数とインスタンス変数の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。