首先,我不知道这个问题的最合适的标题会是什么。 竞争者:“如何实现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(…)
的功能?