以下内容使我怀疑我想要的是类还是模块。
基本上,我正在构建各种解析器,一个API库。
我的代码连接到的外部服务每次发出请求时都需要一个令牌。
我已成功生成此令牌。但是,如果它不在类的__init__
中,我不确定如何将该令牌“提供”给类实例。
到目前为止,我的代码:
class MBParser(object):
pass
class SomeServiceParser(MBParser):
'''instantiate and use me'''
def __init__(self):
self.token = _get_token()
@staticmethod
def _get_token():
# code to get the token
答案 0 :(得分:0)
您可以将每个需要新令牌的函数包装在装饰器中,如下所示:
def new_token(func):
def wrapper(self, *args, **kwargs):
self.token = SomeParser._get_token()
r = func(self, *args, **kwargs)
return wrapper
我在self
方法中显式添加了一个wrapper
参数,因为类中的方法仍然需要此参数。这样,我可以访问self.token
属性并将其设置为新值
可以如下使用装饰器:
@new_token
def makeHTTPRequest(self, name):
# ... make request and use self.token here