潘飞 2009年11月13日 星期五 14:24 | 1883次浏览 | 0条评论
python装饰器
自娱自乐...
装饰器:
类里定义类方法(classmethod):
def f(cls,...):
defination of f snipped
f = classmethod(f)
这样写对可读性没有什么好处,因为,当看到f定义的时候,读者不会很快意识到这就是一个类方法。如果在f前面能说明这一点,就好多了。2.4允许如下的语法:
@classmethod def f(cls,...):
definations here
@classmethod装饰器必须紧跟着一个def语句,就是说f = classmethod(f)就会在def语句之后执行。
自己定义的装饰器,接受一个函数对象作为参数,并返回一个函数对象。
def showdoc(f):
if f.__doc__:
print '%s: %s'%(f.__name__,f.__doc__)
else:
print '%s:no docstring'%f.__name__
return f
@showdoc
def f1():
'''I have doc'''
pass
@showdoc
def f2():
pass
Zeuux © 2024
京ICP备05028076号
暂时没有评论