ホームページ > バックエンド開発 > Python チュートリアル > あなたの記事に適した質問ベースのタイトルをいくつか紹介します。 * クラス属性とインスタンス属性: Python で変数を定義する場所は? * Python オブジェクト指向プログラミング: クラス属性を使用する場合

あなたの記事に適した質問ベースのタイトルをいくつか紹介します。 * クラス属性とインスタンス属性: Python で変数を定義する場所は? * Python オブジェクト指向プログラミング: クラス属性を使用する場合

DDD
リリース: 2024-10-27 18:31:30
オリジナル
767 人が閲覧しました

Here are a few question-based titles that fit your article:

* Class vs. Instance Attributes: Where Should You Define Variables in Python?
* Python Object-Oriented Programming: When to Use Class Attributes and Instance Attributes?
* Understanding the Diff

クラス属性とインスタンス属性: __init__() の内部と外部の変数

オブジェクト指向プログラミングでは、クラス属性とインスタンス属性が重要な役割を果たします。役割。しかし、変数を __init__() メソッドの内部に配置する場合と外部に配置する場合の違いは何でしょうか?この区別を詳しく見てみましょう。

指定されたコード スニペットを考えてみましょう。

<code class="python">class WithClass ():
    def __init__(self):
        self.value = "Bob"
    def my_func(self):
        print(self.value)

class WithoutClass ():
    value = "Bob"

    def my_func(self):
        print(self.value)</code>
ログイン後にコピー

__init__() の外部の変数

__init__() の外部で定義された変数クラスに属しています。これらは、そのクラスから作成されたすべてのインスタンスに共通です。たとえば、WithoutClass クラスの場合:

<code class="python">WithoutClass.value = "Bob"</code>
ログイン後にコピー

WithoutClass クラスのインスタンス経由でこの変数にアクセスすると、同じ値「Bob」が返されます。

__init__() 内の変数

対照的に、__init__() 内で定義され、先頭に self. が付いた変数は、それぞれの個別のオブジェクトに属します。 __init__() 内で変数を設定すると、そのオブジェクトに固有のインスタンス属性になります。

<code class="python">WithClass().value = "Alice"  # Unique to this instance</code>
ログイン後にコピー

WithClass クラスの別のインスタンスからこの同じ変数にアクセスすると、別の値が生成されます:

<code class="python">WithClass().value = "Bob"  # Unique to this instance</code>
ログイン後にコピー

影響

変数を宣言する場所の選択は、その動作に影響を及ぼします。

  • クラス全体の変数: 変数を __init__() の外に配置すると、それがクラス属性となり、すべてのインスタンス間で共有されます。これは、すべてのオブジェクトに一貫して適用されるグローバル設定またはプロパティに役立ちます。
  • インスタンス固有の変数: __init__() 内の変数を self で定義します。 prefix はインスタンス固有の属性を作成します。各オブジェクトにはその変数の独自のコピーがあり、個々のオブジェクトのカスタマイズが可能です。

以上があなたの記事に適した質問ベースのタイトルをいくつか紹介します。 * クラス属性とインスタンス属性: Python で変数を定義する場所は? * Python オブジェクト指向プログラミング: クラス属性を使用する場合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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