4.9作业
试验菱形问题下的属性查找顺序
class g(object):
def test(self):
print('from g')
# pass
print(g.__bases__)
class e(g):
def test(self):
print('from e')
# pass
class b(e):
def test(self):
print('from b')
# pass
class f(g):
def test(self):
print('from f')
# pass
class c(f):
def test(self):
print('from c')
# pass
class d(g):
def test(self):
print('from d')
# pass
class a(b, c, d):
def test(self):
print('from a')
obj = a()
# (<class 'object'>,)
obj.test()
# a->b->e-c-f-d->g-object
# from a
在昨天作业的基础之上
-
引入属性访问控制+property
-
引入继承与派生的概念来减少代码冗余
注意:要满足什么"是"什么的关系,不满足"是"的关系不要去继承
class School:
def __init__(self,name,address):
self.__name = name
self.__address = address
self.__grade = []
@ property
def school(self):
return f"校区名:{self.__name} 校区地址:{self.__address}"
@ school.setter
def school(self,obj):
self.__name = obj.__name
self.__address = obj.__address
@ school.deleter
def school(self):
del self.__name
del self.__address
def add_grade(self,grade_obj):
self.__grade.append(grade_obj)
def grade_info(self):
print(self.__name.center(60,"-"))
for grade_obj in self.__grade:
grade_obj.grade_info()
class Grade(School):
def __init__(self,classroom,name,address):
School.__init__(name,address)
self.__classroom = classroom
self.course = []
@ property
def class_info(self):
return f'教室:{self.__name} 教室所在地区:{self.__address}'
@ class_info.setter
def class_info(self,obj):
self.__name = obj.name
self.__address = obj.address
@ class_info.deleter
def class_info(self):
del self.__name
del self.__address
def add_course(self,obj):
self.course.append(obj)
def course_info(self):
print(self.__name.center(60,"-"))
for course_obj in self.course:
course_obj.course_info()
class Course():
def __init__(self,name,data,price):
self.__name = name
self.__data = data
self.__price = price
@ property
def course_info(self):
return f"课程名:{self.__name},课程周期:{self.__data},课程价格:{self.__price}"
@ course_info.setter
def course_info(self,obj):
self.__name = obj.name
self.__data = obj.data
self.__price = obj.price
@ course_info.deleter
def course_info(self):
del self.__name
del self.__data
del self.__price
class Student:
def __init__(self,school,name,age,id):
self.__school = school
self.__name = name
self.__age = age
self.__id = id
@ property
def student_info(self):
return f"学校:{self.__school},学生姓名:{self.__name},年龄:{self.__age},学号:{self.__id}"
@ student_info.setter
def student_info(self,obj):
self.__school = obj.school
self.__name = obj.name
self.__age = obj.age
self.__id = obj.id
def class_info(self,obj):
obj.class_info()
class Teacher:
def __init__(self,name,age,salary,grade):
self.name=name
self.age=age
self.salary=salary
self.grade=grade
@property
def teacher_info(self):
return (f'{self.name}老师,年龄为{self.age},薪资为{self.salary},等级为{self.grade}')
@teacher_info.setter
def teacher_info(self,obj):
self.name=obj.name
self.age=obj.age
self.salary=obj.salary
self.grade=obj.grade
@teacher_info.deleter
def teacher_info(self):
del self.name
del self.age
del self.salary
del self.grade
def get_grade(self,student_name,grade):
print(f'{self.name}给{student_name}打了{grade}分')

浙公网安备 33010602011771号