高度なパイソン - マジックメソッド

__コール__

1  __call__ 
2  クラスA:
 3      DEF  __call__(セルフ、引数*、** kwargsから)
 。4          プリント' 呼び出しメソッドを実行' 。5  
。6 A = A()
 。7 A()  オブジェクト()コール__call_に対応方法_ 
8。 
9。 ()()クラス名()())(得られたオブジェクトのインスタンスに対応し、そのオブジェクト、メソッド__call__呼び出し
10  
11。 クラスB():
 12である     DEF  __init__ (セルフ、CLS ):
 13は          =のself.a CLS()
 14          )(self.a
 15 
16 B = B(A)

__len__

1  __len__ 
2組み込み関数(LEN)とビルトインクラスメソッド(__len__)である姦通
 3。 クラスマイリスト():
 4      DEF  __init__ (自己):
 5          self.lst = [1,2,3 ]
 。6          セルフ。 =名' アレックス' 
7。          self.age = 83
 8。 
9。     DEF  __len__ (自己):
 10          戻り(セルフLEN __dict__ 。11  
12であり、 L = マイリスト()
 13は プリント(LEN(L))
 14  LEN(OBJ)に対応この方法はの__len__ OBJと呼ばれる
15  __len__値はの道リターンでlen関数の戻り値である
16  #をオブジェクトがobjの__len__方法を持っていない場合LEN関数がエラーになります

 

__新着__

1  #1 __new__は、方法#構成されている
2  __init__#初期化方法
3。 
4つの。 クラスシングル:
 5      DEFの __new__である(CLS、引数*、** kwargsから)
 。6          プリント" 新しい新しい方法" 。7          戻り物体__New__である(CLS)
 8。 
9。     DEF  __init__ (自己):
 10          プリントinitメソッド。11  
12は、 オブジェクトに属する、1オープンスペース
13  2の送信された空間オブジェクト自身が、初期化を行い、
14  3.このスペースのオブジェクトが呼び出し元に返される
15  クラスシングル:
 16      DEFの __new__がある(CLS、引数*、** kwargsから):
 17          。OBJ =オブジェクト__new__をされた(CLS)
 18は、         印刷" 新新方法" 、OBJ)
 。19          リターンOBJ
 20  
21      DEFの __init__ (セルフ):
 22          印刷" initメソッド" 、セルフ)
 23  
24 OBJ = シングル()
 25  #の唯一の新しいメソッドのオブジェクトを呼び出して、いや、ニューシングルのSINGLE 
26  何時に実行する新しい方法?
27    インスタンス化した後、__新しいスペースを作成するために、最初のinit__の前に行わ

シングルトン

1  クラスであれば、最初からのみ、このクラスはシングルトンクラスであり、オブジェクトに属するスペースを開い説明開始から終了まで、唯一のインスタンスを終了する
2  クラスシングル:
 3      __ISINSTANCE = なし
 。4      DEFの __new__は、CLS( * 引数)
 。5          IF  ません CLS。__ISINSTANCE 6つの              。CLS __ISINSTANCE =オブジェクト__new__ある(CLS)
 7。         リターン CLS。__ISINSTANCE 
8。 
9。     DEF  __init__ (セルフ、名前、年齢):
 10          self.name = 11。          self.age = 年齢
12  
13、S1 =シングル(" アレックス"、83 14、S2 =シングル(" taibai "、43 15  プリント(S1、S2)
シングルトン

 

__str__ / __repr__

1  クラスの学生:
 2      DEFの __str__ (自己):
 3          リターン ' %S%S '(self.name、self.school)
 4。 
5。     DEF  __init__ (セルフ、名):
 6          self.name = 。7          self.school = " Oldboy " 
。8  
。9アレックス=学生(" アレックス" 10  プリント(アレックス)
 。11  プリント(STR(アレックス))   実装に相当する組み込みデータ型、内蔵型は、__str__ 
12は プリント' 学生:S%'アレックス)
 13は 
14  プリント(OBJ)は、obj .__ str__の実装方法に相当する
15  #のSTR(OBJ)メソッドは.__ str__ OBJを実行することと等価である
16  '%S'は実行OBJ .__ str_に対応_方法

要約:

__call__)は(OBJに対応する
(OBJ)でlenに対応__len__
__new__は、クラスのコンストラクタのメモリ空間を開放することが特に重要である
__str__ STR(OBJ)、印刷( '%s'は%OBJ、OBJ)を
二重の方法ではないすべての私たちは、直接外部に呼び出す必要があり
ますが、自動的にこれらの二つの劣った方法のための特別な構文をトリガーするためにいくつかの他の組み込み関数が常に存在しています

おすすめ

転載: www.cnblogs.com/arley520/p/11520887.html