擅长:python、mysql、java
<p>好吧,你可以这样做:</p>
<pre><code>class Foo:
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
foo = Foo(a=1, b='two', c='iii')
print(foo.a, foo.b, foo.c)
</code></pre>
<p><strong>输出</strong></p>
^{pr2}$
<p>但是如果这样做了,那么在将<code>kwargs</code>中的键转储到实例<code>__dict__</code>之前,最好检查一下它们是否正常。;)</p>
<p>下面是一个稍微有点花哨的示例,它对传入的参数进行了一点检查。在</p>
<pre><code>class Foo:
attrs = ['a', 'b', 'c']
''' Some stuff about a, b, & c '''
def __init__(self, **kwargs):
valid = {key: kwargs.get(key) for key in self.attrs}
self.__dict__.update(valid)
def __repr__(self):
args = ', '.join(['{}={}'.format(key, getattr(self, key)) for key in self.attrs])
return 'Foo({})'.format(args)
foo = Foo(a=1, c='iii', d='four')
print(foo)
</code></pre>
<p><strong>输出</strong></p>
<pre><code>Foo(a=1, b=None, c=iii)
</code></pre>