有什么方法可以自动为 python 创建构造函数吗?

Is there any way to automatically create a constructor for python?

我有一个像下面这样的class C,我不能像C("a", 1, 2.5)那样构造它。

class C(object):
    def __init__(self):
        self.A = ""
        self.B = 0
        self.C = 1.2

所以我写了下面的函数make_c

def make_c(a, b, c):
    c = C()
    c.A = a
    c.B = b
    c.C = c

然而,这并不整洁,我必须为每个 CLS 创建不同版本的 make_CLS。所以我想知道是否有一些方法我不需要写 make_c.

也许下面的代码可行,但我不知道这是否是最好的方法,因为需要 exec,我仍然必须命名所有字段。

def make_common(cls_name, fields_map):
    o = eval(cls_name)
    for k,v in fields_map.iteritems():
        exec "o.{}={}".format(k, v)
    return o

这个问题在Python2下,不过如果只有Python3有更好的办法,我也愿意知道

--编辑--

我无法更改class C的定义,因为这些代码都是由其他程序生成的。

为什么不直接添加要传递给 __init__() 函数的变量?

class C(object):
    def __init__(self,a , b, c):
        self.A = a
        self.B = b
        self.C = c

test = C("a", 1, 2.5)

test.A
#'a'

也许是这样的?这避免了使用 eval

def make_class(cls_name, fields):
    my_class = globals()[cls_name]()
    my_class.__dict__.update(fields)
    return my_class

然后

my_class = make_class('C', {'a':1, 'b':2, 'c':3})