クラスの魔法のメソッド

  魔法の多くの方法がありますが、魔法が共通のメソッド__init __(自己)の一種で、クラスバインドされたオブジェクトは、自動的にpythonでトリガされます。その後、他のマジックメソッドとチャットします。

__str__方法

  このメソッドは値を返す必要があり、戻り値は文字列型です。

筋力方法
クラスA:
     DEF  __str__(自己):         #1 印刷は、自己トリガーオブジェクト。図1は、結果は2キャンセルされなかった場合は、キャンセルの結果である
        リターン ' <クラスA> ' 
    パス
A = A()
 印刷(A)    結果1:<を。__メイン__ 0x0000026AF987D208でオブジェクト> 2の結果:<クラスA>

__del__方法

  オブジェクトは、プログラム(オブジェクト・クラス消滅)の終了時に削除され、この方法は、自動的にトリガ

デル方法
クラスA:
     DEF  __del__(自己):    自己削除トリガー
        プリント' AAAA ' パス
A = A()
 プリント(A)

__call__方法

  この関数は、クラスで定義されています。オブジェクトは、この関数はオブジェクト名のみプラス()を必要とし、この関数を呼び出すことができます呼び出します。

クラスA:
     DEF  __call__(セルフ、引数*、** kwargsから):
         印刷' AAA ' 
A = A()
A()     機能__call__結果を実行します。aaa

__slots__方法

  この形式の方法は、適切なサイズのメモリパーティションプロパティに格納することができる機能(ないDEF)、の形ではなく、また、他の特性の拡張を制限します。

  スロット方法   
インポートSYSの
 クラスA:
     __slots__は = [ ' 名前' ]           #の限界属性クラスは、この設定に
    DEF  __init__ :(セルフ、名)
        self.name = 
Aが A(= ' meking '#は、他の追加できません。プロパティ、そうでない場合はエラー
を印刷(sys.getsizeof(A))     メモリサイズクラスビュー「」「48

構文の実現のポイント

  ドット構文では、これらの機能delattr、GETATTR、setatterを達成するために必要。GETATTR、名前でプロパティを探し、そのようなプロパティがトリガされません。SETATTR、属性割り当ての名前でトリガされます。delattr、属性名を削除するには、トリガされます。getAttribute setatterでは使用できません。その使用は、それがトリガされます、あなたが呼び出すときに、すでに少しプロパティの値です。

クラスA:
    年齢 = 1。     テストのgetAttribute関数
    DEF  __getattr__ (セルフ、キー):
         リターン ' GETATTR ' 、キー

    DEFの __setattr__ (セルフ、キー、値): 自己__dict__は、 [キー] =値    #の属性値の名前クラスでキーと値のペアの形で結合辞書
        を印刷' SETATTR '、キー、値、自己を。__dict__ [キー])

    DEF  __delattr__ (セルフ、キー):
         デル。自己__dict__ [キー]
         印刷" delattr' キー)

    DEF  __getattribute__(セルフ、キー): #   属性は、この機能を実行するために使用される優先順位属性名が存在

        戻り、キーを' のgetAttribute " 
A = A()
 印刷(a.age)    属性が存在しない、GETATTRを実行します機能、および関数は値を返し、該当なしとして書かれていない 
a.name =    ときSETATTR機能構文バインド値、実行します。戻り値なし
デル a.nameの       あなたがプロパティを削除します。Delattr機能の実行

構文の[]実現

  この構文は、キーワードのGetItem、SetItem関数、SetItem関数、delitemが必要です。プロパティ名が値を参照呼び出し、あなたは辞書が道を呼び出して使用することができます。

クラスA:
     DEF  __getitem__ (自己、項目):
         プリント' GetItem関数' リターン ' GetItem関数' 、項目

    DEF  __setitem__ (自己、キー、値):
        自己。__dict__ [キー] = プリント' SetItem関数' 戻り自己。__dict__ 値、[キー] 

    DEF  __delitem__ (自己、キー):
         プリント' delitem ' デルセルフ。__dict__ [キー] 
A = A()
 を印刷([ ' 年齢' ])   クラスがないような属性名は、関数がのgetItem実行 
[ ' 年齢を' ] = 18である     SetItem関数の機能を実行するために
デル A [ " 年齢" ]      #は、機能を実行delitem

被験体におけるオペレータのアプリケーション

  クラス間、それはオブジェクト間のサイズよりも大きくすることができます。必要なルールの比に基づいて比。GTでは、LT、EQを実現することができます。

クラスA:
     DEF  __init__ (セルフ、名前、年齢):
        self.name = 
        self.age = 年齢
     DEFの __gt__(分身):        #1 オブジェクトとオブジェクトとの間の比較、
        IF self.age> other.age:   比較年齢によって標準、
            リターントゥルー
         返すFalseの
A = A(' mEKING 'である、20 
Bは =(' mekingを'、18れるを印刷(> B)を

イテレータクラス定義 

クラスA:
     DEF  __init__ (自己、開始、終わり、ステップ):
        self.start = 開始
        self.endを = 
        self.step = ステップ

    デフ __iter__ (自己):
         戻り自己   返回本身

    DEF  __next__ (自己): = self.start 
        self.start + = self.step
         の場合 < self.end:
             戻る他を上げる呼び出すとStopIterationを            ループを終了します。または意志無限ループの


印刷((1、10 ,. 1)。。__iter__())  __inter__方法

について I における(1、10 ,. 1):         反復値の
    印刷(I、エンド= ' '

コンテキスト管理クラス

クラスA:
     DEF  __init__(セルフ、パス):  受信ファイルパス 
        self.file =開く(パス)   オープンファイル
    DEF  __enter__ (自己):
        RES = self.file.read()
         戻り RES              #は、オブジェクト自体を返し
    DEF  __exit__(自己、exc_type、exc_val、exc_tb):   #1 exc_cal、exc_tbが捕獲されているexc_type、
        self.file.close()
         を返す
(と' A.TXT ' :Fなど)
     を印刷(F)

ポリモーフィズム

  多型は概念であり、同じ方法は、それに応じてPythonで多型を呼び出すことができ、異なる結果を生成し、満たすことができます。ストリングを計算する、リストは、辞書は、長さlen()この方法で使用することができ、しかし別の結果は、この多型現象であってもよいです。

他の方法(これも非常に重要)

  でisinstance(B):オブジェクトの実体が決定されるが、このタイプBのではありません。オブジェクトとクラス間の分析

  issubclass(a)は、クラスとカテゴリ間の継承関係が存在するかどうかを決定します。クラス間の分析

 

おすすめ

転載: www.cnblogs.com/huaiXin/p/11265105.html