開発環境
- 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 コメント:
コメントを投稿