Python入門から精pao通lu-OOPオブジェクト向けプログラミング

2287 ワード

コア特性
  • パッケージ
  • 継承
  • マルチステート:djangoリンクredisなど、異なるサブクラスの複数の実装パッケージ接続を親インタフェースで生成し、このオブジェクト
  • を全サイクルで使用するredisオブジェクトを生成する.
    インスタンス化プロセス
    クラス+()==オブジェクト
    クラスの構成
  • 属性:共有属性+プライベート属性
  • メソッド:クラスのメモリに保存する
  • 公有変数/クラス変数/静的フィールド:
  • 特殊方法
  • プライベート属性self.__private:オブジェクトのみが自分でアクセス/対外アクセスインタフェース/オブジェクトを提供できます.クラス名_プライベート変数@propertyの騒乱操作:処理値を取得できます.
    @property
    def usd_percent_change_7d(self) -> float:
        num = self.data['quotes']['USD']['percent_change_7d']
        if num is None:
            return 0
        return float(num)
    

    公有変数/クラス変数
    メソッドと同じレベルでself修飾がない、メモリに共通に存在する==クラス定義も一緒に定義され、インスタンス化まで待つことなくインスタンス化後、インスタンスがobjを通過する.class_attr方式でクラス変数を変更すると、インスタンスは独自の属性を生成し、インスタンスはクラス変数に変更されません.
    クラス変数を変更するには、オブジェクトが1つのプロパティを付与すると再作成されるため、クラス名でのみ呼び出すことができます.オブジェクトは1つの役割ドメインに相当します.
    class X:
        hi = []
        
    a = X()
    b = X()
    a.foo = 1 # a       
    print(a.foo) 
    print(b.foo) # b   foo     
    

    特殊な方法
  • __del__:参照がクリアされ、自動的に実行され、プログラムが実行され、この関数が実行され、pythonでdelキーが削除されるときに削除されるのは変数名であり、メモリの変数が指すアドレスに格納されているデータ
  • を削除するのではない.
    新式クラス&クラシッククラス
    新しいクラス
  • 定義クラス
  • 親メソッド
  • を継承
  • マルチ継承順序:左、右、上==広さ優先
  • クラシッククラス
  • 定義クラス
  • 親メソッド
  • を継承
  • マルチ継承順序(Python 3.+では新式クラスと一致):左,上,右=深さ優先