【发布时间】:2012-03-16 23:28:13
【问题描述】:
我是 Python 菜鸟。要了解我正在制作一个自然选择模拟器,但我有点卡住了。
一点背景:
我列出了具有随机位模式的生物体,如下所示:
population.append(chromosone.Chromosone(chromosoneSize))
有机体繁殖,所以我有一个@classmethod 允许根据其父位模式的组合创建有机体,如下所示:
population.append(chromosone.Chromosone.makeChromo(newOrganism))
有时我会从生物体中返回基因,如下所示:
def 返回基因(自我):
"""归还基因"""
返回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 如何处理类型和对象?
【问题讨论】:
-
maheChromo()返回什么? -
另外,这个词是 chromosome 而不是 chromosone
-
@David Heffernan,请注意!
-
感谢您的更新。但是,如果我们看不到您的
returngene()是如何定义的,我们将无法帮助您... -
def returngene(self): return self.gene