【发布时间】:2011-08-22 17:12:44
【问题描述】:
我有一个向远程 API 发出请求的类。我希望能够减少我正在拨打的电话的数量。我的类中的一些方法进行相同的 API 调用(但出于不同的原因),所以我希望它们能够“共享”缓存的 API 响应。
我不完全确定是使用可选参数还是使用多个方法更符合 Pythonic,因为这些方法在进行 API 调用时具有一些必需的参数。
这是我看到的一些方法,你认为哪个最好?
class A:
def a_method( item_id, cached_item_api_response = None):
""" Seems awkward having to supplied item_id even
if cached_item_api_response is given
"""
api_response = None
if cached_item_api_response:
api_response = cached_item_api_response
else:
api_response = ... # make api call using item_id
... #do stuff
或者这个:
class B:
def a_method(item_id = None, cached_api_response = None):
""" Seems awkward as it makes no sense NOT to supply EITHER
item_id or cached_api_response
"""
api_response = None
if cached_item_api_response:
api_response = cached_item_api_response
elif item_id:
api_response = ... # make api call using item_id
else:
#ERROR
... #do stuff
还是这样更合适?
class C:
"""Seems even more awkward to have different method calls"""
def a_method(item_id):
api_response = ... # make api call using item_id
api_response_logic(api_response)
def b_method(cached_api_response):
api_response_logic(cached_api_response)
def api_response_logic(api_response):
... # do stuff
【问题讨论】:
标签: python api coding-style optional-parameters caching