在列表中调用“append”时会发生什么情况?

2024-06-06 08:16:35 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我不知道这个问题最合适的题目是什么。竞争者:“如何在自定义类中实现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([]),我想稍后给这个个体添加一个染色体。目前,我必须:

^{pr2}$

相反,我最理想的做法是:

indiv.append(makeChromosome(params))

同样的效果。在

所以我的问题是:当我在一个列表中调用append时,幕后到底发生了什么?是否有一个__append__(或__foo__)被调用?在我的Individual类中实现该函数会得到我想要的行为吗?在

例如,我知道我可以在Individual中实现__contains__,以启用if foo in indiv功能。如何启用indiv.append(…)功能?在


Tags: self功能idfoocountindividuallistclass