传递类实例参数以方便实例化

时间:2019-07-03 11:05:52

标签: python python-3.x class

大约有十二个单元测试使用具有六个参数的类,其中一个或两个参数已针对测试进行了系统修改。感觉好像有很多重复。我想摆脱重复,并使其非常简洁明了,每个测试在六个参数中进行了修改。否则,该代码会容易出错,如果您不小心将某个assertFalse的属性用于某个地方,则测试可能会成功,但并非出于您要测试的原因。

我只是要在脚本顶部实例化该类,为每个测试创建一个deepcopy并根据需要修改其属性(由于需要烧瓶上下文,看起来像是变得凌乱。

base_instance = SomeClass(
                  firstparameter = "dog",
                  secondparameter = 5,
                  thirdparameter = [7, 8],
                  fourthparameter = 5.5,
                  fifthparameter = "bar"
                  sixthparameter = "foo"
)

问题是,括号内的关键字参数集并不是真正的python对象,您可以轻松地将其放入变量中,传递或轻轻地修改。是否可以通过某种方式在字典或其他结构中给该类提供其参数,因此我可以轻松地通过对拥有参数的对象的deepcopy进行系统更改来创建实例?我希望它对关键字保持明确,因此不要开始搞乱列表和位置参数。

1 个答案:

答案 0 :(得分:2)

您绝对可以做到这一点。

params = {
    'firstparameter': "dog",
    'secondparameter': 5,
    'thirdparameter': [7, 8],
    'fourthparameter': 5.5,
    'fifthparameter': "bar",
    'sixthparameter': "foo"
}
base_instance = SomeClass(**params)