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

标签 python class

我有一个简单的 Python 类。名称是一个字符串,事件是字符串列表。

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

最佳答案

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)

关于python - 简单地将列表附加到Python中的类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22337799/

相关文章:

python - 方法对象 vs 函数对象,Python 类实例 vs 类

Java:异常抛出类?

java - 如果一个类被声明为 final 是否有必要将方法声明为 final

python - pyserial - 如何读取从串行设备发送的最后一行

python - Python 中的十进制数相等

python - 读取 Pandas 数据框前几行的方法

java - 我应该如何在Java中引用 "grandparent"类的函数/void?

php - 在 PHP 类中使用双冒号调用方法后将方法更改为静态

python - numpy 和 pysparse 浮点表示问题

python - 在程序的后面部分使用变量(python)