问题描述
在我的 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',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',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',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',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[2],row[3]])
self._modules.append(Module(str(row[0]),int(row[2]),str(row[3])))
cur.execute("SELECT * from subject")
subresult = cur.fetchall()
cur.close()
con.close()
with open('./data/subjects.csv',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'
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)