为什么它在我的自定义类中给出“'int'对象不可调用”

2024-10-03 17:22:30 发布

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

我正在用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, value2, value3, 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

先谢谢你


Tags: 对象inselfforindexrandomgenerationint
2条回答

尝试取出-1,range函数已经将第一个数字降到了0;所以它会给你一个错误,因为你试图调用creatures[-1],尽管我认为这必须要起作用

您试图调用方法generation,但它是用attribute generation隐藏的,attribute是int

我会调用方法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)

相关问题 更多 >