ins*_*get 2 python implementation class append
首先,我不知道这个问题的最合适的标题是什么.竞争者:"如何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()
Run Code Online (Sandbox Code Playgroud)
这是我想要用这个类做的事情:
假设我实例化了一个没有染色体的新个体:indiv = Individual([])
我想稍后为这个人添加染色体.目前,我必须这样做:
indiv.chromosomes.append(makeChromosome(params))
Run Code Online (Sandbox Code Playgroud)
相反,我理想的做法是:
indiv.append(makeChromosome(params))
Run Code Online (Sandbox Code Playgroud)
具有相同的效果.
所以我的问题是这样的:当我打电话append
给一个清单时,真正发生了什么?是否有被调用的__append__
(或__foo__
)?在我Individual
班上实现这个功能会让我得到理想的行为吗?
我知道,比如,我可以实现__contains__
在Individual
启用if foo in indiv
功能.我将如何进行启用indiv.append(…)
功能?
.append()
只是一个接受一个参数的方法,您可以自己轻松定义一个:
def append(self, newitem):
self.chromosomes.append(newitem)
Run Code Online (Sandbox Code Playgroud)
不需要魔术方法.
归档时间: |
|
查看次数: |
183 次 |
最近记录: |