面向对象编程有三大特性:封装、继承、多态。下面来进行详细的学习吧!
封装
封装的意思就是指把数据与功能整合在一起,需要使用的时候,再去调用,简单来说,也就是类的功能,类就是存放数据和功能的容器。除此之外,针对于封装到对象或者类中的属性,我们还可以控制对它们的访问,也就是隐藏属性,如果要详细了解,可以查看之前的笔记:面向对象基础——绑定方法、非绑定方法、隐藏属性、property装饰器
继承
什么是继承
继承就是新建类的一种方式,新建出来的类称为子类或者称作派生类,被继承的类称为父类或者基类。子类可以继承父类的属性。
为什么要用继承
类解决了对象与对象之间的代码冗余问题,而继承则解决了类与类之间的代码冗余问题
如何使用继承
-
经典类:没有继承object类的子子孙孙类都是经典类
-
新式类:继承了object类的子子孙孙类都是新式类
-
注意:只有在python2中才区分经典类和新式类,在python3中都是新式类
继承所满足的是什么是什么的问题,下面我们通过代码来进行练习:
# 抽象出来学生和老师的共同点
class People():
school = '清华大学'
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
# Student类继承People类:表示学生是人
class Student(People):
def __init__(self, name, age, gender, course=None):
if course is None:
course = []
People.__init__(self, name, age, gender) # 指名道姓的调用父类
self.course = course
def choose_course(self):
print('aaaa')
class Teacher(People):
def __init__(self, name, age, gender, level):
People.__init__(self, name, age, gender)
self.level = level
def score(self):
print('打分')
stu = Student('jack', 19, 'male')
tea = Teacher('mary', 20 ,'female', 10)
print(stu.name)
print(stu.school)
print(tea.school)
单继承下的属性查找顺序
在python中既支持一个类继承一个类,也支持一个类同时继承多个父类,下面我们先看看在单继承下的属性查找