0

前段时间问过,但这个问题更复杂。我有类的实例,并且不时调用实例的方法。例子:

class A(object):

    __COUNTER = 0

    def method_1(self):
        ...

    def method_2(self):
        ...

    def method_N(self):
        ...

inst = A()
# call at one module
inst.method_1()
# call at other module
inst.method_N()

调用方法时,我需要增加一个计数器__COUNTER,但方法有效,我需要减少计数器。在某些模块处初始化__init__.py和导入的实例。

有人可以帮我吗?

谢谢!

4

1 回答 1

0

调用后调整我的装饰器以再次减少计数器:

def increment_counter(method):
    def wrapper(self, *args, **kw):
        self._COUNTER += 1
        try:
            return method(self, *args, **kw)
        finally:
            self._COUNTER -= 1
    return wrapper

即使该方法导致引发异常,该finally块也将始终被调用。

于 2013-06-21T12:37:24.950 回答