中国史之【寒浞夺政】:
寒浞(zhuo),原为后羿之相,后来杀死后羿,夺取有穷氏政权,随后又消灭了夏王相,使自太康失国以来分裂了54年的天下重新统一。
-来源:全历史APP

今天讲python的面向对象编程。有需要的也可以直接去我的github查看全部笔记:
https://github.com/JackKoLing/python_notes_with_ten_days

俗话说:“好记性不如烂笔头”,多写写多记记,总不会错。多一些不为什么的坚持,少一些功利主义的追求。对于环境的配置,可以参考以下两篇:

  • win10版 @小保,公众号:CV之道
    【深度学习环境配置】手把手实战配置深度学习环境(win10版)
  • Linux版 @小保,公众号:CV之道
    【深度学习环境配置】手把手实战配置深度学习环境(Ubuntu20.04版)

1 面向对象编程(OOP)

  • 程序 = 算法(指令)+ 数据,代码可以选择以指令为核心或以数据为核心进行编写

两种范型:

  • 面向过程编程:以指令为核心,程序具有一系列线性步骤,阐述算法的步骤,主体思想是代码作用于数据
  • 面向对象编程(OOP):以数据为核心,围绕数据及为数据严格定义的接口来组织程序,用数据控制对代码的访问

2 面向对象的核心概念

(1)所有编程语言最终目的都是提供一种“抽象”方法

  • 在机器模型(“解空间”或“方案空间”)与实际解决的问题模型(“问题空间”)之间,程序员必须建立一种联系
  • 面向过程:程序 = 算法 + 数据结构
  • 面向对象:将问题空间中的元素以及它们在解空间中的表示物抽象为对象,并允许通过问题来描述问题而不是方案。可以把实例想象成一种新型变量,它保存着数据,但可以对自身的数据执行操作
l1 = [1, 2, 3] # 这就是一个列表实例,可以想象成一种新型变量
print(l1.pop()) # 可以对自身的数据执行操作,但这些操作必须是本来定义好的
>>>
3

(2)类型由状态集合(数据)和转换这些状态的操作集合(内置函数)组成
类抽象:

  • 类:定义了被多个同一类型对象共享的结构和行为(数据和代码,即类的成员)
  • 类是抽象的,不能操作。只有实例成具体的对象,含有数据才能操作
  • 数据:成员变量或实例变量,也就是属性
  • 成员方法:简称方法,也就是函数,是操作变量的代码,用于定义如何使用成员变量。因此一个类的行为和接口是通过方法来定义的
  • 变量和方法分为:(1)私有,内部使用;(2)公共:外部可见

3 面向对象的程序设计方法

  • 所有东西都是对象
  • 程序是一大堆对象的组合。通过消息(调用请求)传递,各对象知道自己该做什么
  • 每个对象都有自己的存储空间,并可容纳其他对象。通过封装现有对象,可以制作成新型对象
  • 每个对象(类的实例)都属于某一类型。类的一个重要特性为“能发什么样的消息给它”,即内置接口是限定的
  • 同一个类的所有对象都能接受相同的消息,因为方法是类内定义的

4 类间关系

  • 依赖(“uses-a”):一个类的方法操纵另一个类的对象
  • 聚合(“has-a”):类A的对象包含类B的对象,如l1=[‘a’,‘b’]这就是列表类对象包含字符串类的对象
  • 继承(“is-a”):描述特殊与一般关系,如汽车是车

5 面向对象编程的三个原则

(1)封装(Encapsulation)

  • 隐藏实现方案细节
  • 将代码及处理的数据绑定在一起的一种编程机制,用于保证程序和数据不受外部干扰且不会被误用
  • 比如:sort()就是一种封装了的排序,你无须深入了解具体怎么实现排序的,只需要给数据就行
  • 又比如:你要开车,不需要去了解引擎怎么制作,只需要插入钥匙,掌握开车的技巧

(2)继承(Inheritance)

  • 一个对象获得另一个对象属性的过程;用于实现按层分类的概念
  • 一个深度继承的子类继承了类层次中它的每个祖先的所有属性
  • 超类、基类、父类都是一个概念
  • 子类、派生类都是一个概念
  • 比如:动物分为哺乳动物和爬行动物,哺乳动物又分为犬科动物和猫科动物。那么动物能呼吸的属性,犬科动物也有

(3)多态(Polymorphism)

  • 允许一个接口被多个通用的类动作使用的特性,具体使用哪个动作与应用场合相关
  • “一个接口,多个方法”,用于为一组相关的动作设计一个通用的接口,以降低程序复杂性
# 这就是“一个接口,多个方法”
def plus(x, y):print(x+y)plus('a', 'b')
plus([1, 2, 3], ['a', 'b', 'c'])
>>>
ab
[1, 2, 3, 'a', 'b', 'c']

【声明】:学习笔记基于互联网上各种学习资源的个人整理。

以上是本期内容,下期介绍python的类和实例。

我叫小保,一名计算机视觉爱好者、学习者、追随者,欢迎关注我一起学习。

【python学习】python的面向对象编程相关推荐

  1. Python学习笔记:面向对象编程(4)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  2. Python学习笔记:面向对象编程(3)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  3. Python学习笔记:面向对象编程(2)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  4. Python学习笔记:面向对象编程(1)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  5. Python学习六:面向对象编程(上)

    文章目录 前言 一.面向对象编程: 1. oop [object oriented programming] 是一种python的编程思路 2. 解释 3. 面向对象 和面向对象编程 二.类和对象 1 ...

  6. 【廖雪峰Python学习笔记】面向对象编程OOP

    面向对象编程 OOP:Object Oriented Programming 程序的基本单元:对象 [ = 数据 + 操作数据的函数] [属性 + 方法] 三大特点:数据封装.继承和多态 OPP中的计 ...

  7. python学习笔记(七):面向对象编程、类

    一.面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一 ...

  8. 【python学习笔记】面向对象编程

    面向对象编程 对象(object):表示客观世界问题空间中的某个具体事物,又表示软件系统解空间的中的基本元素 面向对象程序设计(Object-oriented programing, OP):是一种程 ...

  9. python学习笔记Day4 面向对象编程,文件操作,os模块,代码调试

    一.traceback模块 错误日志可能用到 import tracebackwhile 1: # 捕获异常的顺序按照先父类后子类try:n1 = int(input('请输入一个被除数'))n2 = ...

  10. Python学习笔记三之编程练习:循环、迭代器与函数

    Python学习笔记三之编程练习 1. 编程第一步 # 求解斐波纳契数列 #/user/bin/python3#Fibonacci series:斐波那契数列 #两个元素的总和确定了下一个数 a,b= ...

最新文章

  1. 计算机动画火柴人作业,(Flash期末作品综合实验报告.doc
  2. 什么是informer机制
  3. IA-32 Intel手册学习笔记(三)任务切换
  4. vs2012里用easyUI,显示不正常
  5. 有哪些开源的 Python 模块让你相见恨晚?
  6. Python基本语法(一)
  7. python_爬虫_模块
  8. OpenCV---直线检测
  9. 1-关于单片机通信数据传输(中断发送,大小端,IEEE754浮点型格式,共用体,空闲中断,环形队列)...
  10. netlogon启动后停止_优雅停止 SpringBoot 服务,拒绝 kill 9 暴力停止!
  11. 绘制流程图的基本规则
  12. 短信API接口怎么调用?
  13. 前端实现excel导出功能(vue)
  14. ArcMap:线、面符号的制作(通用线符号的制作)超详细
  15. 我在帝都买房后,又开始思考怎样赚更多的钱了。
  16. NYIST 113 字符串替换
  17. 七星彩长奖表图_2018够力七星彩奖表
  18. SPI通信拓扑如何选择?
  19. UE4-ReplicationGraph源码分析-基础
  20. 生化危机6pc测试软件,《生化危机6》PC性能测试 移植作一贯不忍直视

热门文章

  1. javamail QQ邮箱发验证码设定有效时间
  2. mp3格式转换软件哪个好?
  3. catia二次开发:人机交互select,start command
  4. 学习大数据必须掌握哪些核心技术?
  5. 贝尔商道赚钱思维36道第04道:二八定律,约仅有20%的因素影响80%的结果
  6. 初始化audio失败是什么意思_DirectXAudio初始化失败,高手看 – 手机爱问
  7. 基于控制的角度无人机集群——目标追踪
  8. 如何帮助空降经理人成功?
  9. 盛唐领土争夺战读后感
  10. 现在国内程序员的工资是什么行情?