Python错误:AttributeError:' int'对象没有属性' tim'

时间:2018-04-02 04:42:40

标签: python genetic-algorithm attributeerror

这里我试图在__init__方法中创建Tim作为类TT的对象列表,并且在main方法中我想为tim列表中的每个对象调用initialize_population方法以进行多次循环

但我得到以下错误。这是代码:

class TT(object):         
    def __init__(self):
        self.fitness=0
        self.tt_number=0
        self.cube=[[[[[0 for i in range(lecturer)]for j in range(days)]for k in range(clas)]for l in range(periods)]for m in range(subjects)]
        self.tim=[TT() for i in range(initial_population)]

    def main(self):
        count=-1
        num=input("Enter Number:-")
        for i in range(initial_population):
            count+=1
            self.tim[i].initialize_population(i)
            self.tim[i].create_population()
        cross_over(tim,count,class_subject_mapping,0)
        return 0


if __name__== "__main__":
    # main(1)

错误:

Python Error:AttributeError: 'int' object has no attribute 'tim'

1 个答案:

答案 0 :(得分:0)

因为def main(self)没有在class TT内缩进,所以它只是一个常规函数,而不是一个方法。你用1调用它,这是本地变量self,事情就好了。我猜想你想要在实例化之后将一个数字提供给类实例,所以我将该函数重命名为run,将其缩进为一个方法并编写了一个不同的main提示用户。请注意,我总是使用4个空格。方法defs不是2(这使得很难发现你的错误!)。

我不能保证这是你真正想要的,代码还有其他问题,但这是一个开始

class TT(object):

   def __init__(self):
      self.fitness=0
      self.tt_number=0
      self.cube=[[[[[0 for i in range(lecturer)]
          for j in range(days)]
          for k in range(clas)]
          for l in range(periods)]
          for m in range(subjects)]
      self.tim=[TT() for i in range(initial_population)]

    def run(self, num):
        count=-1
        for i in range(initial_population):
            count+=1
            self.tim[i].initialize_population(i)
            self.tim[i].create_population()
        cross_over(self.tim, count, class_subject_mapping, 0)
        return 0

def main():
    num=input("Enter Number:-")
    tt = TT()
    tt.run(num)

if __name__ == "__main__":
    main()