假设我想在Python类中初始化50个变量。我想通过加载一个dict来做到这一点,其中每个键/值对对应一个self.key = value
语句,默认情况下都被初始化为None。
我现在的代码是:
def load_values(self, values):
for k, v in values.iteritems():
if k in self.__dict__.keys(): # if the key in the dict matches a previously
# initialized attribute
self.k = v
这不起作用,因为Python认为k
是属性的名称,而不是。我怎样才能做到这一点?我正在运行Python 2.7。
答案 0 :(得分:2)
class Foo(object):
def load_values(self, **kwargs):
for key, value in kwargs.iteritems():
setattr(self, key, value)
foo = Foo()
foo.load_values(egg='bacon', sausages='spam')
# or
foo.load_values(**{'egg': 'bacon', 'sausages': 'spam'})
print(foo.egg) # bacon
print(foo.sausages) # spam