为什么我的自定义类给出了“'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],尽管我认为这必须行之有效。