【发布时间】:2012-10-06 22:30:40
【问题描述】:
首先,我不知道这个问题最合适的标题是什么。竞争者:“如何在自定义类中实现list.append”。
我有一个名为Individual 的class。这是课程的相关部分:
from itertools import count
class Individual:
ID = count()
def __init__(self, chromosomes):
self.chromosomes = list(chromosomes)
self.id = self.ID.next()
这就是我想对这门课做的事情:
假设我实例化了一个没有染色体的新个体:indiv = Individual([]),我想稍后为这个个体添加一条染色体。目前,我必须这样做:
indiv.chromosomes.append(makeChromosome(params))
相反,我最想做的是:
indiv.append(makeChromosome(params))
同样的效果。
所以我的问题是:当我在列表中调用append 时,引擎盖下到底发生了什么?有没有被调用的__append__(或__foo__)?在我的 Individual 类中实现该功能会得到我想要的行为吗?
例如,我知道我可以在Individual 中实现__contains__ 以启用if foo in indiv 功能。我将如何启用indiv.append(…) 功能?
【问题讨论】:
标签: python class append implementation