当前位置:
首页 > temp > 简明python教程 >
-
python基础(24):面向对象三大特性一(继承)
1. 继承
1.1 什么是继承
继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类。
python中类的继承分为:单继承和多继承。
- class ParentClass1: #定义父类
- pass
- class ParentClass2: #定义父类
- pass
- class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass
- pass
- class SubClass2(ParentClass1,ParentClass2): #python支持多继承,用逗号分隔开多个继承的类
- pass
查看继承:
- >>> SubClass1.__bases__ #__base__只查看从左到右继承的第一个子类,__bases__则是查看所有继承的父类
- (<class '__main__.ParentClass1'>,)
- >>> SubClass2.__bases__
- (<class '__main__.ParentClass1'>, <class '__main__.ParentClass2'>)
提示:如果没有指定基类,python的类会默认继承object类,object是所有python类的基类,它提供了一些常见方法(如__str__)的实现。
- >>> ParentClass1.__bases__
- (<class 'object'>,)
- >>> ParentClass2.__bases__
- (<class 'object'>,)
1.2 继承与抽象
抽象即抽取类似或者说比较像的部分。
抽象分成两个层次:
1.将奥巴马和梅西这俩对象比较像的部分抽取成类;
2.将人,猪,狗这三个类比较像的部分抽取成父类。
抽象最主要的作用是划分类别(可以隔离关注点,降低复杂度)
继承:是基于抽象的结果,通过编程语言去实现它,肯定是先经历抽象这个过程,才能通过继承的方式去表达出抽象的结构。
抽象只是分析和设计的过程中,一个动作或者说一种技巧,通过抽象可以得到类
1.3 继承与重用性
使用继承来解决代码重用的例子:
- ==========================第一部分
- 例如
- 猫可以:吃、喝、爬树
- 狗可以:吃、喝、看家
- 如果我们要分别为猫和狗创建一个类,那么就需要为 猫 和 狗 实现他们所有的功能,伪代码如下:
- #猫和狗有大量相同的内容
- class 猫:
- def 吃(self):
- # do something
- def 喝(self):
- # do something
- def 爬树(self):
- # do something
- class 狗:
- def 吃(self):
- # do something
- def 喝(self):
- # do something
- def 看家(self):
- #do something
- ==========================第二部分
- 上述代码不难看出,吃、喝是猫和狗都具有的功能,而我们却分别的猫和狗的类中编写了两次。如果使用 继承 的思想,如下实现:
- 动物:吃、喝
- 猫:爬树(猫继承动物的功能)
- 狗:看家(狗继承动物的功能)
- 伪代码如下:
- class 动物:
- def 吃(self):
- # do something
- def 喝(self):
- # do something
- # 在类后面括号中写入另外一个类名,表示当前类继承另外一个类
- class 猫(动物):
- def 爬树(self):
- print '喵喵叫'
- # 在类后面括号中写入另外一个类名,表示当前类继承另外一个类
- class 狗(动物):
- def 看家(self):
- print '汪汪叫'
- ==========================第三部分
- #继承的代码实现
- class Animal:
- def eat(self):
- print("%s 吃 " %self.name)
- def drink(self):
- print ("%s 喝 " %self.name)
- class Cat(Animal):
- def __init__(self, name):
- self.name = name
- self.breed = '猫'
- def climb(self):
- print('爬树')
- class Dog(Animal):
- def __init__(self, name):
- self.name = name
- self.breed='狗
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数