1. 面向对象

1. 面向对象编程万物皆对象

1. 对象?

对象:独立的存在 或 作为目标的事物

  1. 独立性:对象都存在清晰的边界,重点在于划分边界
  2. 功能性:对象都能表现出一些功能、操作或行为
  3. 交互性:对象之间存在交换,如:运算和继承

2. Python语言的“万物皆对象”

  • Python语言中所有的数据类型都行对象、函数是对象、模块是对象
  • Python所有类都继承与最基础类object
  • Python语言中数据类型的操作功能都是类方法的体现

3. OOP: Object-Oriented Programming

  • OOP: 面向对象编程,一种编程思想,重点在于高抽象的复用代码
  • OOP把对象当做程序的基本单元,对象包含数据和操作数据的函数
  • OOP本质是把问题解决, 抽象为以对象为中心的计算机程序
  • OOP在较大规模或复杂项目中十分有用,OOP可以提高协作产量
  • OOP最主要价值在于代码复用
  • OOP只是一种编程方式,并非解决问题的高级方法

4. 面向对象 VS 面向过程

  • 面向过程: 以解决问题的过程步骤为核心编写程序的方式
  • 面向对象: 以问题对象构建和应用为核心的编程程序的方式
  • 所有OOP能解决的问题,面向过程都能解决

5. OOP三个特征

  • 封装: 属性和方法的抽象,用数据和操作数据的方法来形成对象逻辑
  • 继承:代码复用的高级抽象,用对象之间的继承关系来形成代码复用
  • 多态: 方法灵活性的抽象,让对象的操作更加灵活,更多复用代码

6. 封装Encapsulation

  • 属性的抽象: 对象的属性(变量)进行定义、隔离及保护
  • 方法的抽象: 对类的方法(函数)进行定义、隔离及保护
  • 目标是形成一个类对外可操作属性和方法的接口

7. 继承 Inheritance

  • 继承是面向对象程序设计的精髓之一
  • 定义了以类为单位的高级抽象级别代码复用
  • 继承是新定义类能够几乎完全使用原有类属性与方法的过程

8. 多态 Polymorphism

  • 参数类型的多态:一个方法能够处理多个类型的能力

  • 参数形式的多态: 一个方法能够接受多个参数的能力

  • 多态是OOP的一个传统概念,Python天然支持多态,不需要特殊语法

2. Python 面向对象术语概述

1. 类 class 和 对象 Object

  • 类: 逻辑抽象和产生对象的模板,一组变量和函数的特定编排
  • 对象: 具体表达数据及操作的实体,相当于程序中的“变量“
  • 实例化:从类到对象的过程,所有“对象”都源于某个“类”

2. 常用术语

  • 对象: 类对象、实例对象

  • 属性: 存储数据的“变量”, 包括:类属性、实例属性

  • 方法:操作数据的“函数”

    包括:

    • 类方法 __classmethod__
    • 实例方法
    • 自由方法
    • 静态方法 __staticmethod__
    • 保留方法
  • 三个特性: 封装、继承、多态

  • 继承: 基类、派生类、子类、父类、超类

  • 命名空间: 程序元素作用域的表达

  • 构造和析构:生成对象和删除对象的过程

类对象 vs 实例对象

  • 类对象:Class Object,维护每个Python类基本信息的数据结构

  • 实例对象: Instance Object, Python类实例后产生的对象,简称:对象。

  • 这是一组概念,类对象全局只有一个,实例对象可以生产多个。