我需要通过一个方法处理一堆相似但专门调用的函数。例如(也许不是一个很好的例子)
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,并且有兴趣听取有关如何处理这样的返回的意见。它不容易标准化,虽然缺少尾随返回值会通过运行时,但领先的返回值不会。
任何提示都会很棒!谢谢。
最佳答案
namedtuple 是返回“无名”元组的非常 Pythonic 的替代方法
http://docs.python.org/library/collections.html#collections.namedtuple
如果只需要读取其中的一些,调用者就不需要提取所有的元组成员。
关于Python,从方法返回/处理复杂数据的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7406349/