我是一个 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 如何处理类型和对象?