这里我试图在__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'
答案 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()