私はリモートAPIにリクエストを行うクラスを持っています。私は電話の回数を減らすことができるようにしたいと思います。私のクラスのメソッドの中には同じAPI呼び出しを行うものがありますが(理由は異なっています)、キャッシュされたAPIレスポンスを共有することができます。Python - 複数のメソッドや多くのオプションのパラメータを持つ方がよいでしょうか?
API呼び出しを行う場合、メソッドにいくつかの必須パラメータがあるため、オプションのパラメータを使用するか、複数のメソッドを使用する方がPythonicであるかどうかは完全にはわかりません。
私はそれらを参照しているようにここでは、あなたは最高だと思いますか?
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
編集していただきありがとうございますが、通常、継承の代わりに委譲を使用することをお勧めします。これは、クラスをより柔軟にするためです。 – Rickard
これがあなたの意図でない場合は、変更して申し訳ありません。それはちょうどPythonの質問だったし、あなたのコードはPythonではありませんでしたので、私は最高の推測をしました - あなたの意図を反映するためにそれをロールバックまたは変更することを自由に感じてください。 (良い答えは何とか、すでに私の+1を持っています) – agf