開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc., Emacs(Text Editor)
- プログラミング言語: Python
『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7) のVI部(クラスとオブジェクト指向プログラミング)の26章(クラスに関する高度なテクニック)の練習問題2を解いてみる。
その他参考書籍
2.
コード(BBEdit)
sample.py
#!/usr/bin/env python3.3 #-*- coding: utf-8 -*- class decorator: def __init__(self, func): self.calls = 0 self.func = func def __call__(self, *args): self.calls += 1 print("call {0} to {1}".format(self.calls, self.func.__name__)) self.func(*args) # 関数デコレータ # 関数に別の関数に書かれたロジックを付加 @decorator def f(a, b): print(a, b) f(1,2) f('a','b') f(3,4) f('c','d') # 関数デコレータ無しで同じ機能を記述 def g(a, b): print(a, b) g = decorator(g) g(1,2) g('a','b') g(3,4) g('c','d')
入出力結果(Terminal)
$ ./sample.py call 1 to f 1 2 call 2 to f a b call 3 to f 3 4 call 4 to f c d call 1 to g 1 2 call 2 to g a b call 3 to g 3 4 call 4 to g c d $
0 コメント:
コメントを投稿