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