# Python learning
# coding:utf-8
# 1.什么是继承
# 一种新建类的方式,新建的类称为子类或派生类,被继承的类称为父类,又称基类或超类
# Python支持多继承:在Python中,新建的类可以继承一个或多个父类
# 多继承的优点与缺点
# 优点:子类可以同时遗传多个父类的属性,最大限度的重用代码
# 缺点:1.违背人的思维习惯;继承表达的是一种什么“是”什么的关系
# 2.代码可读性变差
# 3.不建议使用多继承,扩展性变差。有可能会引发菱形问题
# 如果涉及到一个子类不可避免的要重用多个父类的属性,应该使用Mixins机制
# 2.为何要用继承:解决类与类之间代码冗余问题
# class Parent1:
# x = 111
#
#
# class Parent2:
# pass
#
#
# class Sub1(Parent1): # 单继承
# pass
#
#
# class Sub2(Parent1, Parent2): # 多继承
# pass
#
#
# print(Sub1.__bases__)
# print(Sub2.__bases__)
# print(Sub1.x)
# 如何实现继承
class OldboyPeople:
school = 'OLD BOY'
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
class Student(OldboyPeople):
def choose_course(self):
print('%s 正在选课' % self.name)
class Teacher(OldboyPeople):
def __init__(self, name, age, sex, salary, level):
OldboyPeople.__init__(self, name, age, sex)
self.salary = salary
self.level = level
def score(self):
print('老师 %s 正在给学生打分' % self.name)
stu_obj = Student('sepia', 20, 'male')
print(stu_obj.__dict__)
print(stu_obj.school)
stu_obj.choose_course()
tea_obj = Teacher('egon', 30, 'male', 100000, 10)
print(tea_obj.__dict__)
print(tea_obj.school)
tea_obj.score()