__コール__
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)を
二重の方法ではないすべての私たちは、直接外部に呼び出す必要があり
ますが、自動的にこれらの二つの劣った方法のための特別な構文をトリガーするためにいくつかの他の組み込み関数が常に存在しています