首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

PYTHON里的装点器能装饰类吗

2013-09-17 
PYTHON里的装饰器能装饰类吗大家好,最近在写程序,很多方法都需要记日志的功能,就尝试使用了PYTHON的DECORA

PYTHON里的装饰器能装饰类吗
大家好,最近在写程序,很多方法都需要记日志的功能,就尝试使用了PYTHON的DECORATOR,但是假如一个类里20个方法都需要记日志,那么就得在这20个函数前面都加上@wrapper,不知道有没有什么简便的方法,可以使这个类中的函数都被装饰?

def wrapper():
...


class c1:
@wrapper
def f1()

@wrapper
def f2()
...
[解决办法]
似乎没有其他更好的方法。当然,我想可以写一个接口函数,做一个函数列表,调用该接口函数,在列表中查找参数中指定的函数并调用之。在该接口函数中添加你所谓的记录日志功能。

但这样有点为了封装而封装,能解决问题,但长期来说,不合适。
[解决办法]
没有。而且你这个需求本身也是有问题的。比如是否要把继承过来的数据也加上decorator,是否需要把__str__也加上。很少有这样的需求需要处理类中的每个函数。而特别的需求又无法提供准确和可复用的语义。Python的哲学之一是“Explicit is better than implicit”。与其含糊的批量处理,不如明确的手动处理。

热点排行