まず、この質問に最も適切なタイトルが何であるかわかりません。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.chromosomes.append(makeChromosome(params))
代わりに、私が理想的にやりたいことは次のとおりです。
indiv.append(makeChromosome(params))
同じ効果で。
だから私の質問はこれです:私がappend
リストを呼び出すとき、実際に内部で何が起こるのですか?__append__
呼び出される(または)はあり__foo__
ますか?その関数をIndividual
クラスに実装すると、目的の動作が得られますか?
たとえば、機能を有効にするために__contains__
実装できることを知っています。機能を有効にするにはどうすればよいですか?Individual
if foo in indiv
indiv.append(…)