ホームページ  >  記事  >  バックエンド開発  >  Python クラスのプロパティを説明する

Python クラスのプロパティを説明する

coldplay.xixi
coldplay.xixi転載
2021-01-08 10:10:541787ブラウズ

Python クラスのプロパティを説明する

関連する無料学習の推奨事項: Python ビデオ チュートリアル

  • # __getattr__クラスが存在しない属性を呼び出すときに呼び出される getattr マジック関数です。この関数が渡す値項目は、呼び出している存在しない値です。

class User(object):
    def __init__(self, name, info):
        self.name = name
        self.info = info
ls = User("李四",{"gender":"male"})print(ls.info)运行结果:{'gender': 'male'}

男性属性を取得したい場合は、__getattr__ マジック メソッドを使用する必要があります。

class User(object):
    def __init__(self, name, info):
        self.name = name
        self.info = info    def __getattr__(self, item):
        return self.info[item]ls = User("李四",{"gender":"male"})print(ls.gender)运行结果:
male
  • 属性記述子は強力な汎用プロトコルです。これは、プロパティ、メソッド、静的メソッド、クラス メソッド
    、および super() の呼び出し原理です。
  • 属性記述子は、特定のプロトコルを実装するクラスです。__get__、__set__、__delete__ の 3 つのメソッドのいずれか 1 つが実装されている限り、このクラスは複数の属性を実装できる記述子です。同じアクセス ロジックは、別のクラスのクラス属性としてインスタンスを作成することです。
  • オブジェクトが __get__ メソッドと __set__ メソッドの両方を定義している場合、そのオブジェクトはデータ記述子と呼ばれます。
    __get__ メソッドのみを定義するオブジェクトは、非データ記述子と呼ばれます。
  • クラス メソッドを使用して記述子を作成する • IntField クラスを記述子クラスとして定義する • IntField クラスのインスタンスを別の User クラスの属性として作成する
class User:
    def __init__(self, age):
        self.age = age    def get_age(self):
        return (str(self.age) + '岁')

    def set_age(self, age):
        if not isinstance(age, int):
            raise TypeError('Type Error')
        self.age = age

tt=User(55)tt.set_age(60)print(tt.get_age())运行结果:60岁
  • Descriptor検索順序 • データ記述子の場合、get__ は __dict より優先されます。 •
    非データ記述子の場合、dict__ は __get より優先されます

プログラミング関連の知識について詳しくは、プログラミング教育をご覧ください。 !

以上がPython クラスのプロパティを説明するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。