魔法の多くの方法がありますが、魔法が共通のメソッド__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)は、クラスとカテゴリ間の継承関係が存在するかどうかを決定します。クラス間の分析