【ゼロから学ぶPython】43. Pythonオブジェクト指向プログラミングにおけるインスタンス属性とクラス属性

インスタンス属性、クラス属性

オブジェクト指向開発ではクラスを使って作成したインスタンスがオブジェクトになりますが、クラスはオブジェクトなのでしょうか?

インスタンス属性

クラスを通じて作成されたオブジェクトはインスタンス オブジェクトと呼ばれ、オブジェクトの属性はインスタンス属性とも呼ばれます。各オブジェクトのデータと、同じ名前を持つ異なるオブジェクトのインスタンス属性が記録されます。記録されたデータは独立しており、互いに干渉しません。 。

class Person(object):
    def __init__(self,name,age):
        # 这里的name和age都属于是实例属性,每个实例在创建时,都有自己的属性
        self.name = name
        self.age = age

オブジェクトが作成されるたびに、オブジェクトには独自の名前と経過時間のプロパティが設定されます。

p1 = Person('张三',18)
p2 = Person("李四",20)

クラス属性

クラス属性は、クラス オブジェクトが所有する属性であり、そのクラスのすべてのインスタンス オブジェクトによって共有されます。クラス属性には、クラス オブジェクトまたはインスタンス オブジェクトを通じてアクセスできます。

class Dog:
    type = "狗"  # 类属性

Dog1、dog2、または Dog クラスのいずれであっても、type 属性にアクセスできます。

print(Dog.type)  # 结果:狗
print(dog1.type)  # 结果:狗
print(dog2.type)  # 结果:狗

使用するシーン

クラス属性は、クラスのインスタンスによって記録されるデータ項目が常に一貫している場合に定義されます。
インスタンス属性では、データを記録するために各オブジェクトが個別のメモリ領域を開く必要がありますが、クラス属性はすべてのクラスで共有され、メモリを 1 つだけ占有するため、より多くのメモリ領域が節約されます。

注意点:

  1. クラス属性とインスタンス属性を同じ名前にすることは避けてください。同じ名前のインスタンス属性が存在する場合、インスタンス オブジェクトは最初にインスタンス属性にアクセスします。
class Dog(object):
    type = "狗"  # 类属性

    def __init__(self):
        self.type = "dog"  # 对象属性

オブジェクトを作成する

dog1 = Dog()

print(dog1.type)     # 结果为 “dog”   类属性和实例属性同名,使用实例对象访问的是实例属性
  1. クラス属性は、インスタンス オブジェクトではなく、クラス オブジェクトを通じてのみ変更できます。
class Dog(object):
    type = "狗"  # 类属性

dog1 = Dog()
dog1.type = "dog"   # 使用实例对象创建了对象属性type

print(dog1.type)     # 结果为 “dog”   类属性和实例属性同名,访问的是实例属性
print(Dog.type)      # 结果为 "狗"   访问类属性

# 只有使用类名才能修改类属性
Dog.type = "土狗"
print(Dog.type)  # 土狗
dog2 = Dog()
print(dog2.type)  # 土狗
  1. クラス属性は、先頭に 2 つのアンダースコアを追加することでプライベートに設定することもできます。のように:
class Dog(object):
    count = 0  # 公有的类属性
    __type = "狗"  # 私有的类属性

print(Dog.count)       # 正确
print(Dog.__type)      # 错误,私有属性,外部无法访问。

先進的な事例

【Python】Pythonで単語当てゲームを実現 - 知力と運に挑戦!

[Python] Python tkinter ライブラリは重量単位変換用の GUI プログラムを実装します

[Python] Selenium を使用して (2023 Blog Star) エントリを取得します

【Python】SeleniumとChrome WebDriverを使って「Tencent Cloud Studio実践合宿」の記事情報を取得する

Tencent Cloud Cloud Studio を使用してバイドゥ AI のスケジューリングを実現し、テキスト認識を実現します

【Pythonで楽しむシリーズ【Xiaobi必見】Pythonマルチスレッドクローラー:絵文字パッケージWebサイトの画像をダウンロード

【Pythonで遊ぶシリーズ】 【小白さん必見】Pythonを使って双世丘の履歴データをクロールして視覚的に分析する

【Pythonで遊ぶシリーズ】 【Xiaobiさん必見】Pythonクローラー技術を使ってプロキシIPを取得してファイルに保存する

【シャオバイ必見】PILライブラリを使ってランク別・列別の複数画像の合成を実現するPython画像合成例

【Xiaobai必見】Pythonクローラーの実戦は女神の写真を一括ダウンロードしてローカルに保存

【Xiaobi必見】Pythonワードクラウドジェネレーターの詳細な分析とコード実装

【Xiaobai必見】NBA選手データの例をPythonでクロール

【Xiaobiさん必見】Pythonでヒマラヤ音声をクロールして保存するサンプルコード

【シャオバイ必見】Pythonを使ってリーグ・オブ・レジェンドのスキン画像を一括ダウンロードする技術的実現

【Xiaobai必見】Pythonクローラーのデータ処理と可視化

【シャオバイ必見】栄光王のヒーロースキン画像を簡単に入手できるPythonクローラープログラム

【Xiaobiさん必見】Pythonを使ってパーソナライズされたリストのWord文書を生成する

【小白必見】Pythonクローラー戦闘:陰陽師のWebサイトから写真を取得して自動保存

Xiaobai必見の図書館管理システムシリーズ - ログインおよび登録機能のサンプルコード

小白の実戦100例:小白入門に最適な完全かつシンプルな双世丘宝くじ当選判定プログラム

geopandas と Shapely (.shp) を使用した地理空間データの処理と視覚化

セレンを使用して Maoyan の映画リスト データをクロールする

画像強調アルゴリズム Retinex の原理と実装の詳細な説明

クローラー入門ガイド (8): 視覚的な分析のための気象データ クローラー プログラムを作成する

クローラー入門 (7): Selenium と BeautifulSoup を使って Douban 映画 Top250 をクロールする例解説【爬虫類の小白さん必見】

クローラー入門ガイド (6): クローラー対策と高度なスキル: IP プロキシ、ユーザー エージェント偽装、Cookie バイパス ログイン検証および検証コード識別ツール

クローラ入門(5):分散クローラと同時実行制御 【クローリング効率向上と要求合理性制御の実装方法】

クローラー入門 (4): Selenium と API を使用して動的 Web ページをクロールする最良の方法

クローラー入門ガイド (3): Python ネットワーク リクエストと一般的なクローラー対策戦略

クローラー入門 (2): データの抽出と処理に正規表現を使用する方法

爬虫類入門(1):爬虫類の基礎とスキルを学ぶ

画像認識における深層学習モデルの応用: CIFAR-10 データセットの実践と精度分析

Python オブジェクト指向プログラミングの基本とサンプル コード

MySQL データベース操作ガイド: Python を使用して操作を追加、削除、変更、クエリする方法を学習します。

Python ファイル操作ガイド: エンコード、読み取り、書き込み、例外処理

Python と Selenium を使ってクローリングを自動化 #【ドラゴンボートフェスティバル特別募集】テクノロジーの究極を探求せよ、未来はあなたのおかげ #寄稿記事

Python マルチスレッドおよびマルチプロセスのチュートリアル: 包括的な分析、コードケース、最適化スキル

Selenium 自動化ツールセット - 完全なガイドとチュートリアル

Python Web クローラーの基礎から実戦までのチュートリアル

Python 入門チュートリアル: for ループ、while ループ、文字列操作、ファイルの読み書き、例外処理の基礎知識をマスターします。

Pandas データ処理と分析チュートリアル: 基本から実際の戦闘まで

Python でよく使用されるデータ型と関連する操作の詳細な説明

【2023年最新】分類モデルの指標を改善する6つの主要なスキームを詳しく解説

Python プログラミングの基礎と高度なスキル、Web 開発、データ分析、機械学習と人工知能の入門

4 つの回帰手法による予測結果をグラフ化: ベクトル回帰、ランダム フォレスト回帰、線形回帰、K 最近傍回帰

おすすめ

転載: blog.csdn.net/qq_33681891/article/details/132356225
おすすめ