作者: 機械伯爵 | |
日時: 2002/4/3(21:20) |
# selfward.py # Pythonオブジェクトの特性で遊ぶスクリプトです # Pythonコンソール上で以下のコマンドをうちこんでみて # ください。 # # >>> from selfward.py import SelfService # >>> a = SelfService() # >>> a()()()()() # # さぁ、どういう結果になるでしょう? # ※Pythonのメソッドフックの理解に役立つと思います。 # ※ちなみに、selfを返すアイディアは、SmalltalkやC++の本には # 載ってましたが、Pythonではあまり見かけませんね。 class SelfService: x = 0 def __call__(self): # 関数的な呼び出し print self.x # を定義するメソッドフック self.x = self.x + 1 # ←旧式の書き方。+=でも可 return self def __repr__(self): # コンソール上での文字列表現 return "" # を定義するメソッドフック