Python自动复制初始化器参数

Sol*_*lma 6 python

Python类有一个名为init的初始化方法.初始化程序通常会接受多个复制到同名属性的参数.

def __init__(self, a, b, c, d):
    self.a = a
    self.b = b
    self.c = c
    self.d = d
Run Code Online (Sandbox Code Playgroud)

这是很多工作,对我来说感觉"unpythonic".有没有办法自动化这个过程?

我想也许沿着这些方面的东西(下面的伪代码)可以工作:

for x in __init__.argument_names:
    exec('self.' + x + ' = ' + x)
Run Code Online (Sandbox Code Playgroud)

我知道用这种方式调用exec不是好习惯.但也许Python开发团队已经创建了一种安全且等效的自动执行此任务的方法.

有什么建议?

FS

Bri*_*ius 1

这是一种方法:

class test:
    def __init__(self, *args):
        names = ['a', 'b', 'c', 'd']
        for name, arg in zip(names, args):
            setattr(self, name, arg)

t = test(5, 6, 7, 8)
print t.a, t.b, t.c, t.d
# 5 6 7 8
Run Code Online (Sandbox Code Playgroud)