3

在 Python 中模仿类型的最佳方法是什么?

这个TestResultHaskell 数据类型如何在 Python 中定义?

data TestResult
  = TestResult {name :: String,
                feature :: String,
                passed :: Bool,
                errorMessage :: String}

我试过了,但它看起来有点傻。还有其他方法可以处理这种行为吗?

class TestResult:
    def __init__(self, name, feature, passed, errorMessage):
        self.name         = name
        self.feature      = feature
        self.passed       = passed
        self.errorMessage = errorMessage

我不是在寻找一些类型多余的东西,而是寻找像“类型构造函数”这样的魔法组合来将一些数据存根组合成一个逻辑上的单一事物。

4

2 回答 2

4

对于不可变数据,您可以使用collections.namedtuple

>>> from collections import namedtuple
>>> TestResult = namedtuple("TestResult", "name feature passed errorMessage")
>>> TestResult("a", "b", True, "c")
TestResult(name='a', feature='b', passed=True, errorMessage='c')
于 2012-09-15T18:38:19.723 回答
2

你的代码对我来说看起来不错。如果您想要一个不太冗长的版本,您可以查看NamedTuple 。

于 2012-09-15T18:39:31.577 回答