簡體   English   中英

當您在列表上調用“追加”時會發生什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM