Python“NoneType”对象查询

2024-05-15 15:45:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我是个Python怪。为了学习我正在制作一个自然选择模拟器,但我有点卡住了。在

一点背景知识:

我列出了一个随机位模式的有机体,如下所示:

population.append(chromosone.Chromosone(chromosoneSize))

有机体繁殖,所以我有一个@classmethod来允许一个有机体基于其双亲位模式的组合而被创建,比如:

^{pr2}$

在某些情况下,我会从一个有机体中返回基因,比如:

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如何处理类型和对象?在


Tags: objdef错误基因模式bitsclsclassmethod
2条回答

AttributeError: 'NoneType' object has no attribute 'returngene'

当您试图访问特殊的None对象上的属性时,会发生此错误。在您的例子中,您试图读取方法returngene,以便调用它。显然,population[each]的计算结果是None

下一步是找出population[each]计算结果为None的原因。大概您附加到population的一个项目是None。接下来我们得出结论

chromosone.Chromosone(chromosoneSize)

或者

^{pr2}$

返回None

现在您知道了发生此错误的原因,您应该能够跟踪根本原因。

可能您忘了向您的return方法添加return语句。

相关问题 更多 >