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

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

这里我试图在 __init__ 方法中将 tim 创建为 class TT 的对象列表,在 main 方法中我想为 tim 中的每个对象调用 initialize_population 方法列出多个 for 循环。

但我在下面收到错误消息。这是代码:

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'

因为 def main(self) 没有在 class TT 内缩进,它只是一个常规函数,而不是方法。你用 1 调用它,它是局部变量 self ,事情从那里开始变坏。我大胆猜测你想在实例化后向 class 实例提供一个数字,所以我将该函数重命名为 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()