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 に答える