ホームページ >バックエンド開発 >Python チュートリアル >Pythonのクラス変数とインスタンス変数の違い

Pythonのクラス変数とインスタンス変数の違い

WBOY
WBOYオリジナル
2024-08-07 06:39:43643ブラウズ

Difference b/w class variable and instance variable 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。