在python中输入模仿

时间:2012-09-15 18:35:23

标签: python haskell

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

如何在Python中定义TestResult Haskell数据类型?

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

我不是在寻找一些类型 - 多余的东西,但是对于类似“类型构造函数”的神奇kludge来组合一些逻辑单一的数据存根。

2 个答案:

答案 0 :(得分: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')

答案 1 :(得分:2)

你的代码对我来说很好看。如果你想要一个不那么详细的版本,你可以查看NamedTuple