方法は、一般的に魔法の使用します

pythonの一般的な魔法の方法:
1、__ GETATTR __(自己、アイテム):メソッドを
アイテム属性のオブジェクトにアクセスするとき、オブジェクトと彼の親が適切なプロパティ、メソッドではなかった場合、我々はに対処するために、このメソッドを呼び出します。 。対応するプロパティまたはメソッド呼び出しオブジェクトのインスタンス場合、対応するプロパティまたはメソッド。
プロパティやメソッドのパラメータ項目が呼び出しを表します。

Fooクラス:
デフ__init __(自己、X):
self.x = X

@property
デフget_01(自己):
プリント(111)
の戻りself.x

__ __getattrのDEF(セルフ、アイテム):
オブジェクト属性のインスタンスが存在する場合、操作が実行されたではありません#faの
印刷は、(「私が行っ」)
印刷(項目)
の戻りself.x
F1 =はFoo(10)
印刷(F1を。 get_01)#111,10
印刷(f1.a)#私は、10、あるん
印刷(f1.get_02)#が行うI、get_02、10です

2 .__ SETATTRの__(自己、項目 、値): メソッドは、
代入文のすべての属性をブロックします。あなたは、このメソッドを定義する場合、self.arrt =値は、自己、__ SETATTRの__(「attrのになるだろう 」、値)。 これには注意が必要です。
プロパティは、彼が__ SETATTRの__、自己再び呼び出すため、self.attr =値を使用することができない__setattr__割り当て方法であった場合(「ATTR 」値) 、無限再帰ループを形成する
スタックオーバーフロー例外を引き起こします。インデックス操作によって、我々は.__すなわち、自己の使用、属性のすべてのインスタンスを割り当てられた辞書に辞書__ [「name」を属性べきです ] =値。

クラスの学生:
デフ__init __(自己、アイテム):
self.x =アイテム
デフ__getattr __(自己、アイテム):
リターンアイテムは、+ 'の出口ではありません'

DEF __setattr __(自己、キー、値):
印刷( "执行我")
自己.__辞書__ [キー] =値+ 2


S =学生(10)は##私は__setattr__実行メソッドを呼び出し
プリント(SX)#12があり
プリント(s.name)方法#コール__getattr__出力は'名前を出ていないが'
s.age。1 =#__setattr__メソッド呼び出しの
印刷(s.age)#出力3。

3、__ STR __(自己):自動的にオブジェクトのインスタンス印刷する方法を呼び出した
クラスの学生を:
__init __(自己、アイテム)DEF:
self.x =項目
DEF __str __(自己):
印刷(「印刷対象あなたは「)を呼び出したときに
リターン」111 "

学生= S(10)
印刷(S)印刷対象のコール#111

おすすめ

転載: www.cnblogs.com/laowang-106/p/11353654.html