[英]What happens when you call `append` on a list?
首先,我不知道該問題最合適的標題是什么。 競爭者:“如何在自定義類中實現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 = Individual([])
該個體添加一條染色體。 目前,我必須執行以下操作:
indiv.chromosomes.append(makeChromosome(params))
相反,我理想地要做的是:
indiv.append(makeChromosome(params))
具有相同的效果。
所以我的問題是這樣的:當我在列表上調用append
時,實際上發生了什么? 是否有被調用的__append__
(或__foo__
)? 在我的Individual
類中實現該功能是否可以使我獲得期望的行為?
例如,我知道我可以在Individual
實現__contains__
來啟用if foo in indiv
功能中的if foo in indiv
。 我將如何啟用indiv.append(…)
功能?
.append()
只是一個帶有一個參數的方法,您可以輕松地自己定義一個:
def append(self, newitem):
self.chromosomes.append(newitem)
不需要魔術方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.