简单地将列表附加到python中的类变量

时间:2014-03-11 22:13:34

标签: python class

我在Python中有这个简单的类。 Name是一个字符串,events是字符串列表。

class Page(object):

    def __init__(self, name=None, events=None):
        self.name = name
        self.events = events or []

    def add(self, x):
        return self.events.append(x)

    @property
    def eventstring(self):
        return " , ".join(self.events)

我有这个输入:

 log = {'key1': [['e1', 'e2'], 'e3', ]], 'key2': ['e5', 'e6', 'e7']}

我想在日志中创建读取并生成页面列表。即

[Page('key1', ['e1', 'e2', 'e3']), Page('key2', ['e5', 'e6', 'e7']}

我创建Page对象列表的当前代码不起作用。另外,收到AttributeError: 'NoneType' object has no attribute 'append'错误信息。

def inputevent(inputlog):
    final_pages = []
    pg = Page()
    for key, val in inputlog.items():
        pg.name = key
        for e in val:
            pg.events = pg.add(e)
        final_pages.append(pg)
    final_pages.append(pg)
return final_pages

1 个答案:

答案 0 :(得分:2)

Page.add()会返回None,但您要将其分配回pg.events

pg.events = pg.add(e)

这有效地清除了pg.events。由于pg.add()就地改变了pg.events,因此根本不需要将pg.events分配回来:

for key, val in inputlog.items():
    pg.name = key
    for e in val:
        pg.add(e)