Python 是否可以通过编程方式设置实例属性?
假设我想在一个Python类中初始化50个变量。我想通过加载一个dict来实现这一点,其中每个键/值对对应于一个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
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