まず、この質問に最も適切なタイトルが何であるかわかりません。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__実装できることを知っています。機能を有効にするにはどうすればよいですか?Individualif foo in indivindiv.append(…)