1.什么是继承?
继承描述的是一种遗传关系,儿子可以重用父亲的属性
程序中继承是一种新建子类的方式,新创建的类称之为子类派生类,被继承的类称之为
在python中继承的特点
单继承
多继承
在python2和python3在继承上的区别
2.为何用继承?
减少类与类之间代码冗余的问题
3.如何继承
先抽象再继承
4.属性查找的顺序
class Foo: def f1(self): print('Foo.f1') def f2(self): print('Foo.f2') self.f1() class Bar(Foo): def f1(self): print('Foo.f1') b=Bar() b.f2()
5.派生?
再子类派生出的新属性中如如何重用父类功能的两种
当然子类也可以添加自己新的属性或者在自己这里重新定义这些属性
继承的方式
通过继承建立里派生类与基类之间的关系,他是一种'是'的关系
组合的方式
用组合的方式建立了类与组合的类之间的关系,他是一种'有'的关系
python2和python3在继承上的区别
新式类:但凡继承object类的子类,以及该子类,以及该子类的子子类,...都称之为新式类
经典类:没有继承object类的子类,以及该子类,以及该子类的子子类,...都称之为经典类
只有在python2中才区分新式类 和经典类
# 在子类派生出的新功能中如何重用父类的功能:
# 方式一: 指名道姓地访问某一个类中的函数,与继承无关
class OldboyPeople:
school = 'Oldboy'
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
# print(OldboyPeople.__init__)
class OldboyStudent(OldboyPeople):
# def __init__(self, name, age, gender):
# self.name = name
# self.age = age
# self.gender = gender
def choose_course(self):
print('%s is choosing course' %self.name)
class OldboyTeacher(OldboyPeople):
# tea, 'egon', 18, 'male', 10, 3000
def __init__(self, name, age, gender,level,salary):
# self.name = name
# self.age = age
# self.gender = gender
OldboyPeople.__init__(self, name, age, gender)
self.level=level
self.salary=salary
def score(self,stu,num):
stu.num=num
print('老师%s给学生%s打分%s' %(self.name,stu.name,num))
# stu=OldboyStudent('kevin',38,'male') #__init___(stu1,'kevin',38,'male')
# print(stu.__dict__)
tea=OldboyTeacher('egon',18,'male',10,3000) #__init___(tea,'egon',18,'male',10,3000)
print(tea.__dict__)
# print(stu.school)
# print(tea.school)