__call__でのpython
Pythonでは、オブジェクトの機能は、実際には次のとおりです。
1つの >>> F = ABS 2 >>> F。__name__ 3 ' ABS ' 4 >>> F(-123 ) 5 123
fはいわゆるすることができますので、fは呼び出し可能オブジェクトと呼ばれています。
すべての機能は呼び出し可能オブジェクトです。
呼び出し可能なオブジェクトになることができますクラスのインスタンスは、特定の方法__を__call()を実装する必要があります。
私たちは、呼び出し可能なPersonクラスになります:
1 クラス人(オブジェクト): 2 DEF __init__ (自己、名前、性別): 3 self.name = 名 4 self.gender = 性別 5 6 DEF __call__ (自己、友達): 7 印刷 ' 私の名前は%sであります.. 。'%self.name 8 プリント ' 私の友人は、%sの...である"%友人
これで、Personインスタンスへの呼び出しを指示することができます:
1 >>> P =人(' ボブ'、' 男性' ) 2 >>> P(' ティム' ) 3私の名前はあるボブ... 4友人があるティム・...
タスク
その数フィボナッチ証書事前に定義された列での改善見て:
クラスのFib(オブジェクト): ???
より簡単に呼び出しを行う__call__方法を追加してください:
1 >>> F = のFib() 2 >>> 印刷 F(10 ) 3 [0、1、1、2、3、5、8、13、21、34]
1 クラスのFib(オブジェクト): 2 DEF __call__ (自己、NUM): 3 、B、L = 0、1 、[] 4 のための N における範囲(NUM): 5 L.append(A) 6 、B = B、A + B 7 戻りL 8 9 F = のFib() 10 印刷 F(10)