我是个Python怪。为了学习我正在制作一个自然选择模拟器,但我有点卡住了。在
一点背景知识:
我列出了一个随机位模式的有机体,如下所示:
population.append(chromosone.Chromosone(chromosoneSize))
有机体繁殖,所以我有一个@classmethod
来允许一个有机体基于其双亲位模式的组合而被创建,比如:
在某些情况下,我会从一个有机体中返回基因,比如:
def returngene(自身):
“返回基因”
返回自我基因在
这适用于由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()是一个简单的方法,它返回gene(一个字符串)。在
我认为我的误解在于@classmethod
以及Python如何处理类型和对象?在
当您试图访问特殊的
None
对象上的属性时,会发生此错误。在您的例子中,您试图读取方法returngene
,以便调用它。显然,population[each]
的计算结果是None
。下一步是找出
population[each]
计算结果为None
的原因。大概您附加到population
的一个项目是None
。接下来我们得出结论或者
^{pr2}$返回
None
。现在您知道了发生此错误的原因,您应该能够跟踪根本原因。
可能您忘了向您的
return
方法添加return
语句。相关问题 更多 >
编程相关推荐