如何从同一个类的方法调用Python classmethod?

时间:2013-03-05 15:50:43

标签: python decorator class-method

我正在尝试创建一个“重试”机制,需要作为其他方法的包装器。我创建了一个类来执行此操作并进行了重试类方法。这适用于其他类的成员,但是如何在与包含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()

0 个答案:

没有答案