为什么我返回的老师名称是默认的None

为什么我返回的老师名称是默认的None

class Teacher(object):
   """
   描述教师编号、姓名、手机号码
   """

   def __init__(self, num, name, phone):
       self.num = num
       self.name = name
       self.phone = phone

   def __str__(self):
       """返回教师编号和姓名属性"""
       return "教师编号:" + str(self.num), "教师名称:" + str(self.name)


class Course(object):
   """
   描述课程编号、课程名称、授课教师(teacher默认值为None)
   """

   def __init__(self, cour_num, cour_name, cour_t=None):
       self.cour_num = cour_num
       self.cour_name = cour_name
       self.cour_t = cour_t

   def __str__(self):
       return self.cour_num, self.cour_name

   # 设定binding(self,teacher)方法实现课程绑定授课教师功能,
   def binding(self, teacher):
       """
       实现课程绑定授课教师功能
       :param teacher: 传入教师类的实例
       :return:
       """
       # 用if判断教师类的实例是否存在,如果存在,将该实例赋值给课程
       # 类的授课教师属性,并将课程名称和教师名称包装成字典进行返回
       if teacher:
           self.cour_t = teacher
           cour_dict = {'课程名称:{},教师名称:{}'.format(self.cour_name, self.cour_t.name)}
           return cour_dict
       else:
           return 0

=====================================

def create_teacher():
   """
   初始化教师信息
   :return: 列表形式返回
   """
   # 将教师信息的每条数据分别传入教师类,分别使用变量接收
   lst = [["T1", "张亮", "13301122001"], ["T2", "王朋", "13301122002"], ["T3", "李旭", "13301122003"],
          ["T4", "黄国发", "13301122004"], ["T5", "周勤", "13301122005"], ["T6", "谢富顺", "13301122006"],
          ["T7", "贾教师", "13301122007"], ["T8", "杨教师", "13301122008"]]
   lst_teach = []
   for i in lst:
       t = Teacher(i[0], i[1], i[2])
       # 创建列表存储步骤(1)教师类的八个实例对象,并返回
       lst_teach.append(t)
   return lst_teach


def course_to_teacher():
   """
   实现课程与教师逐一绑定
   :return: 以列表形式返回
   """

   # 创建空列表
   lst = []
   # 调用课程信息初始化方法,使用变量ls_course接收
   ls_course = prepare_course()

   # 调用教师信息初始化方法,使用变量ls_teacher接收
   ls_teacher = create_teacher()
   # 循环遍历课程信息初始化方法的长度:结合课程信息初始化方法与遍历的数字,得到课程信息初始化方法列表中的
   # 每条课程类实例,通过每条课程类实例去绑定(课程类中已定义绑定方法,直接调用即可)倒叙的每一条教师类信
   # 息,将绑定后的每条数据追加到空列表
   for i in range(0,len(ls_course)):
       s = ls_course[i].binding(ls_teacher)
       lst.append(s)

   return lst



正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕美 2019-08-06 10:42:30

同学,你好。可以参考"dh1211"同学回答中的方法进行修改, 若还有问题可继续提问,祝学习愉快~~~~

dh1211 2019-08-06 09:41:30
  for i in range(0,len(ls_course)):
        s = ls_course[i].binding(ls_teacher)
        lst.append(s)

调用binding的时候传入的参数应该是Teacher的实例,你这边传入的是Teacher实例组成的列表,在调用时会产生问题,列表不存在,self.cour_t.name这个属性

def binding(self, teacher):
    """
    实现课程绑定授课教师功能
    :param teacher: 传入教师类的实例
    :return:
    """
    # 用if判断教师类的实例是否存在,如果存在,将该实例赋值给课程
    # 类的授课教师属性,并将课程名称和教师名称包装成字典进行返回
    if teacher:
        self.cour_t = teacher
        cour_dict = {'课程名称:{},教师名称:{}'.format(self.cour_name, self.cour_t.name)}
        return cour_dict
    else:
        return 0

替换为

for course_index in range(0, len(ls_course)):
    teacher_index = len(ls_teacher) - course_index - 1
    course2teacher = ls_course[course_index].binding(ls_teacher[teacher_index])
    ls_course2teacher.append(course2teacher)


  • 提问者 葛鹏1111 #1
    终于搞定了。谢谢啦
    2019-08-06 12:43:05
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师