python - AttributeError:“str”对象没有属性“get_lect”
问题描述
在我的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'
解决方案
推荐阅读
- android - Android Kotlin 测试。lateinit 属性 _db 尚未初始化
- javascript - 如何使用 jsPDF 保存大图像?
- c# - 等待密钥被释放
- java - JDK 1.6 的菱形语法替代方案
- javascript - 如何在单击事件的jquery函数中将文本框值作为参数传递
- opencv - How can I compile opencv from source at Win 10
- printing - Flutter创建汉字PDF文件并在打印机中打印文件
- php - Laravel 5.6 错误 MethodNotAllowedHttpException
- c - Gnuplot:通过从单个文件读取位置来设置多个对象
- android - 如何使用 1 个按钮关闭屏幕但未使用管理员权限锁定