在我的chromosome.py
中,我一直面临这样一个错误:我的str
对象没有get_lect()
的属性
这是我的chromosome.py
代码
def initialize(self):
subjects = self._data.get_subjects()
for i in range(0, len(subjects)):
modules = subjects[i].get_module()
for j in range(0, len(modules)):
newclass = Class(self._class_num, subjects[i], modules[j])
self._class_num += 1
newclass.set_lesson(self._data.get_lessons()[rand.randrange(0, len(self._data.get_lessons()))])
newclass.set_room(self._data.get_venues()[rand.randrange(0, len(self._data.get_venues()))])
newclass.set_lect(modules[j].get_lect()[rand.randrange(0, len(modules[j].get_lect()))])
self._classes.append(newclass)
return self
class.py
class Class:
def __init__(self, cid, sub, mod):
self._id = cid
self._sub = sub
self._mod = mod
self._lect = None
self._lesson = None
self._room = None
def get_cid(self): return self._id
def get_sub(self): return self._sub
def get_mod(self): return self._mod
def get_lect(self): return self._lect
def get_lesson(self): return self._lesson
def get_room(self): return self._room
def set_lect(self, lect): self._lect = lect
def set_lesson(self, lesson): self._lesson = lesson
def set_room(self, room): self._room = room
def __str__(self):
return f"{self._sub.get_name()},{self._mod.get_num()},{self._lesson.get_num()},"\
f"{self._lect.get_id(), self._lesson.get_id()}"
Data.py
from model.Venue import Venue
from model.Time import Time
from model.Lecturer import Lecturer
from model.Module import Module
from model.Subject import Subject
import pymysql
import csv
class Data:
def __init__(self):
self._venues = []
self._lessons = []
self._lect = []
self._modules = []
self._subjects = []
con=pymysql.connect(host="localhost",user="root",password="",database="timetable")
cur=con.cursor()
cur.execute("SELECT * from venue")
result = cur.fetchall()
# vfile = open('./data/venue.csv', 'w', newline='')
# filewrite = csv.writer(vfile)
#filewrite.writerow(result)
with open('./data/venue.csv', 'w', newline='') as csvfile:
csvwriter = csv.writer(csvfile)
for row in result:
csvwriter.writerow([row[0], row[1]])
# print(row[0],row[1])
self._venues.append(Venue(str(row[0]), int(row[1])))
cur.execute("SELECT * from timelist")
timeresult = cur.fetchall()
with open('./data/times.csv', 'w' ,newline='') as times:
timewriter = csv.writer(times)
for row in timeresult:
timewriter.writerow([row[0], row[1], row[2]])
self._lessons.append(Time(str(row[0]), str(row[1]), int(row[2])))
cur.execute("SELECT * from lecturer")
lectresult = cur.fetchall()
with open('./data/lecturers.csv', 'w', newline='') as lecturerspage:
lecturerwriter = csv.writer(lecturerspage)
for row in lectresult:
lecturerwriter.writerow([row[0], row[1]])
self._lect.append(Lecturer(str(row[0]), str(row[1])))
cur.execute("SELECT * from module")
modresult = cur.fetchall()
with open('./data/modules.csv','w', newline='') as modules:
modulewriter = csv.writer(modules)
for row in modresult:
# lecturers= []
# lecturers_ids = str(row[3]).split(",")
# for i in lecturers_ids:
# lecturers.append(self.get_lecturer_by_id(i.strip()))
modulewriter.writerow([row[0], row[1], row[2], row[3]])
self._modules.append(Module(str(row[0]),str(row[1]), int(row[2]), str(row[3])))
cur.execute("SELECT * from subject")
subresult = cur.fetchall()
cur.close()
con.close()
with open('./data/subjects.csv', 'w', newline='') as subjects:
subwriter = csv.writer(subjects)
for row in subresult:
subwriter.writerow([row[0],row[1]])
self._subjects.append(Subject(str(row[0]),str(row[1])))
self._number_of_classes = 0
for i in range(0, len(self._subjects)):
self._number_of_classes += len(self._subjects[i].get_module())
def get_venues(self): return self._venues
def get_lect(self): return self._lect
def get_modules(self): return self._modules
def get_subjects(self): return self._subjects
def get_lessons(self): return self._lessons
def get_number_of_classes(self): return self._number_of_classes
我正在尝试一种面向对象的方法,尝试对这段代码执行遗传算法。然而,每次我试图显示数据时,我的get_lect
似乎都会出错
每当我运行程序查看时,总是会得到错误文件"C:\Users\TP046012\IdeaProjects\fypfinal\Chromosome.py", line 55, in initialize newclass.set_lect(modules[j].get_lect()[rand.randrange(0, len(modules[j].get_lect()))]) AttributeError: 'str' object has no attribute 'get_lect'
目前没有回答
相关问题 更多 >
编程相关推荐