python匿名类变量名

时间:2015-03-22 03:57:10

标签: python python-2.7

我是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。我该如何动态地做到这一点?

1 个答案:

答案 0 :(得分:1)

使用setattr功能创建属性。引用文档,

  

参数是一个对象,一个字符串和一个任意值。 字符串可以命名现有属性或新属性。如果对象允许,该函数会将值分配给属性。例如,setattr(x, 'foobar', 123)相当于x.foobar = 123

因此,在您的情况下,您可以使用header[i]中的值创建属性,就像这样

setattr(obj, header[i], item)