我是python匿名类的新手。我在网上找到了这个代码
class Struct(object):
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
def __repr__(self):
d = self.__dict__
results = [type(self).__name__ + "("] # or: self.__class__.__name__
for key in sorted(d.keys()):
if (len(results) > 1): results.append(", ")
results.append(key + "=" + repr(d[key]))
results.append(")")
return "".join(results)
def __eq__(self, other):
return self.__dict__ == other.__dict__
def __hash__(self):
return hash(repr(self)) # inefficient but simple
用法是
obj = Struct(x=1, y=2, c=3)
obj.x #1
obj.y #2
我想知道如何动态分配变量名称。
我正在尝试做这样的事情
for i, item in enumerate(row):
object = Struct()
a = (header[i])
object.a= item
显然这是错误的,a
中的object.a
是字符串a
。我该如何动态地做到这一点?
答案 0 :(得分:1)
使用setattr
功能创建属性。引用文档,
参数是一个对象,一个字符串和一个任意值。 字符串可以命名现有属性或新属性。如果对象允许,该函数会将值分配给属性。例如,
setattr(x, 'foobar', 123)
相当于x.foobar = 123
。
因此,在您的情况下,您可以使用header[i]
中的值创建属性,就像这样
setattr(obj, header[i], item)