Python 是否可以通过编程方式设置实例属性?

Python 是否可以通过编程方式设置实例属性?,python,Python,假设我想在一个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 mat

假设我想在一个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。

我将使用和:

我将使用和:


您使用
setattr(self,k,v)
将该字典用作代码中的
变量:value
配对有什么问题?
如果self中有k.\uuu dict\uuuu.keys()
=>如果self中有k.\uu dict\uuu顺便说一句,您不想设置类变量,您想设置实例变量。必须存在十几个重复的实例变量。您使用的
setattr(self,k,v)
将该字典用作代码中的
变量:值
配对有什么问题?
如果self中有k。
=>如果self中有k。
顺便说一句,您不想设置类变量,您要设置实例变量。必须存在该实例变量的十几个副本
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