首先,我不知道这个问题最合适的标题是什么。竞争者:“如何在自定义类中实现 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(...)
功能?
最佳答案
.append()
只是一种接受一个参数的方法,您可以轻松地自己定义一个:
def append(self, newitem):
self.chromosomes.append(newitem)
不需要魔术方法。
关于python - 当您在列表中调用 `append` 时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12921222/