如何通过调用实例的方法来增加和减少计数器?

时间:2013-06-21 12:24:14

标签: python

I asked sometime前,但这个问题比较复杂。我有类的实例和不时调用实例的方法。例如:

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并在某些模块中导入。

有人可以帮我吗?

谢谢!

1 个答案:

答案 0 :(得分: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块将始终被调用,即使该方法导致异常被引发。