1つのメソッドから、類似しているが排他的に呼ばれる関数を扱う必要があります。例えば(そうでないかもしれない素晴らしい例)Python、メソッドから複雑なデータを返す/処理する最良の方法
class Util(object):
def method1(self):
return "method1", [1,2,3]
def method2(self):
return "method2", {"1":4, "2":5, "3":6}
def method3(self):
return [1,2,3], "method3", {"1":4, "2":5, "3":6}
def call_method(self, method_func):
if method_func.__name__ == "method1":
(name, dict_values) = self.method_func()
if method_func.__name__ == "method2":
(name, list_values) = self.method_func()
if method_func.__name__ == "method3":
(list_values, name, dict_values) = self.method_func()
# How best to manage a return for 3 optional, but not inter-dependent values?
return name, dict_values, list_values
if __name__ = "__main__":
u = Util()
(name, dict_values, list_values) = u.call_method(Util.method1)
call_method()の戻り私はここに視覚化しようとしているものです。私は、私が作る必要がある排他的なサブコールの束を持っている、私はそれらを返すことができるものにそれらをマッサージする必要があります。
Utilクラスのメンバ変数に追加するのは簡単でしょうか? u.call_method()を実装する人は、単に何を探すべきかを知る必要があります。
誰もが最初にデザインについて不平を言う前に、それは私のものではありません。私は一貫したAPIを公開し、このようなリターンをどのように処理するかについての意見を聞くだけでよい。これは簡単に正規化されていませんし、行方不明の戻り値がランタイムに合格しますが、先行する戻り値は渡されません。
ヒントがあれば大丈夫です!ありがとうございました。
'return name、dict_values、list_values'の何が問題になっていますか?あなたは何の問題があるのか分かりません。 –