首先,我不知道这个问题最合适的标题是什么。竞争者:“如何list.append
在自定义类中实现”。
我有一个class
叫Individual
. 这是课程的相关部分:
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
会让我得到想要的行为吗?
例如,我知道我可以实现__contains__
以Individual
启用if foo in indiv
功能。我将如何启用indiv.append(…)
功能?