类中的Python装饰器

我想用类变量做装饰器。我如何使装饰器成为类函数?因为我有很多需要锁定的功能。我不想写下来

with self.lock: or self.lock.release() 

每个功能。这是我的代码!

class Something:
    self.lock = Lock( .. )

    #decorator
    def _lock(self, func):
        def wrapper(*args, **kwargs):
            self.lock.acquire()
            func(*args, **kwargs)
            self.lock.release()
        return wrapper

    @_lock
    def some_func(self,):
        #do something
布伦丹·亚伯

您必须这样做。它仅适用于实例方法,不适用于函数。

class Something:
    self.lock = Lock( .. )

    #decorator
    def _lock(func):
        def wrapper(self, *args, **kwargs):
            self.lock.acquire()
            r = func(self, *args, **kwargs)
            self.lock.release()
            return r
        return wrapper

    @_lock
    def some_func(self):
        #do something

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章