相关疑难解决方法(0)

Python装饰器的最佳实践,使用类vs函数

正如我所理解的那样,有两种方法可以做Python装饰器,既可以使用__call__类,也可以定义函数作为装饰器.这些方法的优点/缺点是什么?有一种首选方法吗?

例1

class dec1(object):
    def __init__(self, f):
        self.f = f
    def __call__(self):
        print "Decorating", self.f.__name__
        self.f()

@dec1
def func1():
    print "inside func1()"

func1()

# Decorating func1
# inside func1()
Run Code Online (Sandbox Code Playgroud)

例2

def dec2(f):
    def new_f():
        print "Decorating", f.__name__
        f()
    return new_f

@dec2
def func2():
    print "inside func2()"

func2()

# Decorating func2
# inside func2()
Run Code Online (Sandbox Code Playgroud)

python decorator syntactic-sugar python-2.7

53
推荐指数
3
解决办法
2万
查看次数

标签 统计

decorator ×1

python ×1

python-2.7 ×1

syntactic-sugar ×1