如何解决为什么我的自定义类给出了“'int'对象不可调用”的信息
我正在用python做这个非常简单的遗传算法。我做了一个自定义类,它将随着“生物”的发展而变化。我创建了该类的实例,当我尝试从一个对象中调用该类的函数时,它给了我“'int'对象不可调用”错误。
这是我所有的代码:
import random as random
class Creature:
def __init__(self,value1,value2,value3,generation,index):
self.value1 = value1
self.value2 = value2
self.value3 = value3
self.generation = generation
self.index = index
def generation(self):
test = self.value1 * self.value2 - self.value3
if test >= 50:
newGeneration.append(self)
self.index = len(newGeneration)
creatures = []
newGeneration = []
for i in range(100):
value1 = random.randint(5,10)
value2 = random.randint(5,30)
value3 = random.randint(30,50)
creatures.append(Creature(value1,1,i))
for i in range(len(creatures) - 1):
creatures[i].generation()
for i in newGeneration:
print(i.value1 * i.value2 - i.value3)
跑步时,它给了我这个
line 29,in <module>
creatures[i].generation()
TypeError: 'int' object is not callable
提前谢谢
解决方法
您尝试调用方法generation
,但是方法generation
将该方法隐藏了,而generate
是一个整数。
我将调用方法class Creature:
def __init__(self,value1,value2,value3,generation,index):
self.value1 = value1
self.value2 = value2
self.value3 = value3
self.generation = generation
self.index = index
def generate(self):
test = self.value1 * self.value2 - self.value3
if test >= 50:
newGeneration.append(self)
self.index = len(newGeneration)
'dog' 'rub' 'tom','rob','kon'
'gog' 'bub' 'rom','vob','zon'
'hog' 'gub' 'kom','mob','son'
'jog' 'hub' 'bom','lob','con'
'fog' 'fub' 'mom','cob','lon'
,
尝试取出-1
,范围函数已经将第一个数字减小到0
;因此它会给您带来错误,因为您试图致电creatures[-1]
,尽管我认为这必须行之有效。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。