У меня есть класс, который обрабатывает запросы к удаленному 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