文档章节

Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)

o
 osc_lbaj0fqn
发布于 2019/09/25 15:10
字数 750
阅读 13
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)

1、面向对象的三大特性:

(1)继承

​ 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以称为基类或超类,新建的类称为派生类或子类。

​ 在Python中实现继承非常简单,在声明类的时候,在类名后面添加一个小括号,就可以完成继承关系。单纯的从代码的层面上来看当两个类具有相同的功能或者特征的时候就可以使用继承。提取一个父类,这个父类中编写者两个类相同的部分,然后两个类分别去继承这个类就可以了,这样写可以避免写很多重复的功能和代码。

​ 继承的作用:

​ 减少代码的重用,提高代码可读性,规范编程模式

(2)封装:将一些代码或数据存储到某个空间中

​ 封装:隐藏对象的属性和实现细节,仅对外提供公共的访问方式

​ 好处: 将变化隔离;便于使用;提高复用性;提高安全性;

​ 封装原则:

​ 将不需要对外提供的内容都隐藏起来。

​ 把属性都隐藏,提供公共方法对其访问。

​ 封装使用:

​ 第一步: 将内容封装到某处

​ 第二步: 从某处调用被封装的内容

​ 通过对象直接调用

​ 通过self间接调用

​ 综上所述:对于面向对象的封装来说,其实就是使用构造方法将内容封装到对象中,然后通过对象直接或者self间接获取被封装的

(3) 多态:多种形态 ,python默认就是多态

​ 多态指的是一类事物有多种形态、

​ 鸭子类型 : 编程思想

​ python中有一句谚语说的好,你看起来像鸭子,那么你就是鸭子。

" When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck." 

中文:

“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”
class A:

    def call(self):
        print("啊啊啊")

    def walk(self):
        print("一步两步")

    def do(self):
        print("左手右手一个慢动作")

class B:

    def call(self):
        print("啊啊啊")

    def walk(self):
        print("一步两步")

    def do(self):
        print("左手右手一个慢动作")

# 统一接口 ,归一化(规范)

def call(object):
    object().call()

call(B)
call(A)

# A 和 B两个类完全没有耦合性,但是在某种意义上他们却统一了一个标准。
# 对相同的功能设定了相同的名字,这样方便开发,这两个方法就可以互成为鸭子类型。

python中 str,list,tuple中很多使用鸭子类型
str.index()
list.index()
tuple.index()
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
5分钟 maven3 快速入门指南

前提条件 你首先需要了解如何在电脑上安装软件。如果你不知道如何做到这一点,请询问你办公室,学校里的人,或花钱找人来解释这个给你。 不建议给Maven的服务邮箱来发邮件寻求支持。 安装Mav...

fanl1982
2014/01/23
1.2W
6
代码生成器--Codgen

Codgen是一个基于数据库元数据模型,使用freemarker模板引擎来构建输出的代码生成器。freemarker的数据模型结构通常来说都是一个Map树状结构模型,codgen也不例外,它的数据模型这棵树的根节...

黄天政
2013/01/29
1.4W
2
JavaScript 声效库--SFX.js

sfx.js 是一个简单的声效封装 JavaScript 包。示例: var sfxObject = new SFX( 'sound_effects/{{type}}' ); 支持: Chrome: OGG + MP3 Opera: OGG Firefox: OGG Safari: MP3 IE9: MP3......

匿名
2013/02/18
1.1K
0
基于 ThinkPHP 的内容管理系统--歪酷CMS

歪酷网站管理系统(歪酷CMS)是一款基于THINKPHP框架开发的PHP+MYSQL网站建站程序,本程序实现了文章和栏目的批量动态管理,支持栏目无限分类,实现多管理员管理,程序辅助功能也基本实现了常见的文...

鲁大在线
2013/02/19
7K
1
Android3D应用与游戏开发框架--JQGL

JQGL 是一款针对Android设备上3D应用、游戏的开发框架。 核心功能是OpenGL-ES的使用框架,相对于大部分开发者而已,OpenGL是陌生的,没有专门研究无法进行相关的开发。 本框架针对于Android...

Jping
2013/02/21
1.6K
0

没有更多内容

加载失败,请刷新页面

加载更多

React Native常用第三方组件汇总

react-native-animatable 动画 react-native-carousel 轮播 react-native-countdown 倒计时 react-native-device-info 设备信息 react-native-fileupload 文件上传 react-native-icons 图标 ......

mdoo
13分钟前
8
0
troubleshoot之:用control+break解决线程死锁问题

简介 如果我们在程序中遇到线程死锁的时候,该怎么去解决呢? 本文将会从一个实际的例子出发,一步一步的揭开java问题解决的面纱。 死锁的代码 写过java多线程程序的人应该都知道,多线程中一...

flydean
14分钟前
5
0
无法打开与身份验证代理的连接 - Could not open a connection to your authentication agent

问题: I am running into this error of: 我遇到以下错误: $ git push heroku masterWarning: Permanently added the RSA host key for IP address '50.19.85.132' to the list of known ......

法国红酒甜
30分钟前
25
0
Trivy

Trivy 是一个面向镜像的漏洞检测工具,具备如下特点: 开源 免费 易用 准确度高 CI 友好 相对于老前辈 Clair,Trivy 的使用非常直观方便,适用于更多的场景。 下面是官方出具的对比表格: 扫...

LitStone
52分钟前
7
0
在UITableView中使用自动布局以获取动态单元格布局和可变的行高

问题: 如何在表格视图的UITableViewCell使用自动布局,以使每个单元格的内容和子视图确定行高(自身/自动),同时保持流畅的滚动性能? 解决方案: 参考一: https://stackoom.com/questio...

技术盛宴
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部