Python,从方法返回/处理复杂数据的最佳方式

标签 python class data-structures

我需要通过一个方法处理一堆相似但专门调用的函数。例如(也许不是一个很好的例子)

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/

相关文章:

python - jinja2 自定义过滤器 "TemplateAssertionError: no filter named ' format_number'"

c++ - 为什么允许在多个 cpp 文件中重新定义类

c# 用于存储的单独类

algorithm - 最被低估或鲜为人知但有用的算法是什么?

c - 无法理解排队功能中的逻辑

python - 获取值错误 : y contains new labels when using scikit learn's LabelEncoder

python - 使用 apt-get 在 debian etch 上安装 python-pyparsing 1.4.2-1.1_all.deb

python - python 中的内存错误 - 如何使用更多内存

php - 是否有一个 call_user_func() 相当于创建一个新的类实例?

python - 二叉树 : How Do Class Instances Link?