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

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

Aug 07, 2024 am 06:39 AM

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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? Apr 01, 2025 pm 05:09 PM

LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? 中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? Apr 01, 2025 pm 11:15 PM

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? Apr 01, 2025 pm 10:51 PM

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

Investing.comの反クローラーメカニズムをバイパスするニュースデータを取得する方法は? Investing.comの反クローラーメカニズムをバイパスするニュースデータを取得する方法は? Apr 02, 2025 am 07:03 AM

Investing.comの反クラウリング戦略を理解する多くの人々は、Investing.com(https://cn.investing.com/news/latest-news)からのニュースデータをクロールしようとします。

See all articles