我正在一个类中使用一个可以接受变量的修饰符,我想在类中初始化该变量。在
下面是一个我目前正在使用的示例(目前正在使用)。在
_RETRIES = 3
class MyClass(object):
def __init__(self, foo):
self._foo=foo
@retry.FuzzedIntervalsOnException(num_retries=_RETRIES)
def my_method(self):
return some_data
不过,我想将其更改为接受类似def __init__(self, foo, retries=3)
的内容,以允许客户端决定重试次数。然而,实现这一点会抛出一个未定义的变量错误。在
我希望能得到下面这样的答案,但是正确的答案似乎比这个要复杂得多:
^{pr2}$有没有一种理想的方法来初始化一个类变量以在装饰器中使用?在
非常感谢
编辑: 有关重试的其他信息,下面是初始化。在
class FuzzedIntervalsOnException(object):
"""Retry on exception
args:
delay: Time delay in seconds for each retry.
num_retries: Total number of retries.
"""
def __init__(self, delay, num_retries):
...
您当前的
retry
可能如下所示:您想要得到
^{pr2}$self.retries
,但是在调用wrapper
之前,您不会有对self
的引用。所以唯一的方法就是把self.retries
放在wrapper
里面。由于不向decorator传递任何参数,因此也可以删除层并执行以下操作:相关问题 更多 >
编程相关推荐