私はPython初心者です。学ぶために私は自然選択シミュレーターを作っていますが、少し行き詰まっています。
背景のビット:
次のように、ランダムなビット パターンで生物のリストを作成します。
population.append(chromosone.Chromosone(chromosoneSize))
生物は繁殖するので、次のように@classmethod
、親のビット パターンの組み合わせに基づいて生物を作成できるようにする必要があります。
population.append(chromosone.Chromosone.makeChromo(newOrganism))
ある時点で、次のように生物から遺伝子を返します。
def returngene(self): """遺伝子を返す"""
return self.gene
これは、 によって作成された生物では機能しますが、 で作成された生物では機能しchromosone.Chromosone(chromosoneSize)
ませんchromosone.Chromosone.makeChromo(newOrganism)
。次のエラーが表示されます。
AttributeError: 'NoneType' object has no attribute 'returngene'
更新: 次のように、makeChromo() を返しました。
@classmethod
def makeChromo(cls, bits):
obj = cls
obj.gene = bits
return obj
しかし、私は今、このエラーが発生します:
TypeError: unbound method returngene() must be called with Chromosone instance as first argument (got nothing instead)
returngene() は、遺伝子 (文字列) を返す単純なメソッドです。
私の誤解は、@classmethod
Python が型とオブジェクトをどのように扱うのかにあると思いますか?