Python我自动传入类的字段

时间:2017-11-03 19:28:17

标签: python object constructor

我厌倦了输入

class A:
    def __init__(self, x, y, z):
        self.x,self.y,self.z = x,y,z

它只是感觉像冗余代码。有没有办法说“我传入的这些变量将成为具有相应名称的字段(即与这些变量名称相同的名称)在一行中?

2 个答案:

答案 0 :(得分:2)

您可以通过以下方式实现目标:

class My:
    def __init__(self, **kwargs):
        for k,v in kwargs.items():
            setattr(self, k, v)

my = My(foo=10, bar=12)

print(vars(my))

请参阅此处查看Documentation

答案 1 :(得分:0)

在Python 3.7+中,新的dataclasses模块似乎非常适合此操作。不过,您必须注释参数的类型,这可能对您不利,也可能对您不利。