我正在尝试创建一个“重试”机制,需要作为其他方法的包装器。我创建了一个类来执行此操作并进行了重试类方法。这适用于其他类的成员,但是如何在与包含classmethod的类相同的类的成员上调用它?
例如,运行以下代码。我想知道我需要在“some_func”之上放置哪一行,以允许它获得与my_func()相同的重试处理。
class Foo(object):
@classmethod
def _retry(cls, func):
def wrapper(self, *args, **kwargs):
print "In the retry: " + func.__name__
return func(cls)
return wrapper
#@Foo._retry # This line doesn't work!
def some_func(self):
print "This is the some_func function that needs to be retried"
a = Foo()
a.some_func()
class Bar(object):
@Foo._retry
def my_func(self):
print "This function will be retried in Foo"
a = Bar()
a.my_func()
b = Foo()
b.some_func()