相关疑难解决方法(0)

类中的Python装饰器

可以写一些像:

class Test(object):
    def _decorator(self, foo):
        foo()

    @self._decorator
    def bar(self):
        pass
Run Code Online (Sandbox Code Playgroud)

这失败了:@self中的自我是未知的

我也尝试过:

@Test._decorator(self)
Run Code Online (Sandbox Code Playgroud)

也失败了:测试未知

我想暂时更改装饰器中的一些实例变量,然后在更改它们之前运行装饰方法.

python class decorator self

123
推荐指数
9
解决办法
8万
查看次数

Python装饰器计数函数调用

我刷新了我尚未得到的一些python功能的记忆,我正在从此python教程中学习,并且有一个我不完全了解的示例。这是关于装饰器计算对函数的调用的代码,这是代码:

def call_counter(func):
    def helper(x):
        helper.calls += 1
        return func(x)
    helper.calls = 0
    return helper

@call_counter
def succ(x):
    return x + 1

if __name__ == '__main__':
    print(succ.calls)
    for i in range(10):
        print(succ(i))
    print(succ.calls)
Run Code Online (Sandbox Code Playgroud)

我在这里没有得到的是为什么我们增加函数包装器的调用(helper.calls + = 1)而不是函数调用本身,为什么它真正起作用?

python python-decorators

5
推荐指数
2
解决办法
3439
查看次数

标签 统计

python ×2

class ×1

decorator ×1

python-decorators ×1

self ×1