【发布时间】:2010-08-25 20:28:07
【问题描述】:
我的任务是创建一个硬件笼子模型。每个笼子包含 N 个插槽,每个插槽可能包含也可能不包含卡。
我想使用列表对笼子进行建模。每个列表索引将对应于槽号。 cards[0].name="Card 0"等
这将允许我的用户通过简单的列表推导查询模型。例如:
for card in cards:
print card.name
我的用户(不是高级 Python 用户)将与模型实时交互,因此列表索引不对应于填充的卡片是不切实际的。换句话说,如果用户删除了一张卡片,我需要做一些事情来表明卡片没有被填充——我的第一个冲动是将列表项设置为None。
Bossman 喜欢这个方案,但如果缺少一张卡片,他对上面的列表理解失败并不感到疯狂。 (目前确实如此。)他更不支持要求用户学习足够的 Python 来创建将忽略 None 的列表理解表达式。
我的想法是继承 list 类,创建一个 newclass。它的工作原理与列表完全一样,除了 for card in cards 只会返回未设置为 None 的成员。
请有人演示如何重载列表类,以便在子类上调用的列表推导将忽略None? (到目前为止,当我尝试这样做时,我的 Python 技能已经开始崩溃了。)
谁能提出更好的方法?
【问题讨论】:
-
你能描述一下你的“卡片”吗?它们是字典吗?类实例?
标签: python list overloading list-comprehension