类的定义

  • 属性(变量)
  • 函数
class MyClass:
    def __init__(self):
        self.name = 'itcast'

    def say_hello(self):
        print('hello')

Note

class为关键字,用来声明一个类

__init__是构造函数,构造函数也是函数,是一个具体实例对象创建时默认调用的函数。

self表示当前创建实例对象本身

类中的函数,有个特点,默认第一个参数都是self

对象

  • 类是一种模板模型
  • 对象是这个类的具体实现

Tip

狗和旺财,哪一个是类?哪一个是对象?

狗是一种类型,属于模板

旺财是狗的实现,属于具体的,具体的就是对象

类的使用

类的使用,其实就是将类具体化,获得对象,然后使用对象的属性和方法

class Car:
    def __init__(self):
        self.speed = 10
        self.x = 0

    def move(self):
        self.x += self.speed

Note

self.speed是属性,用来记录数据的

self.x是属性,用来记录数据的

move是函数,是一种行为,行为的变化会产生数据的变化

整个对象,其实就是维护状态数据的。

面向对象

提到面向对象,就不得不提到面向过程。 面向对象和面向过程其实都是一种编程思想, 就是解决问题的思路。

面向过程

面向过程, 全称POP(Process Oriented Programming)。

  • 面向过程强调的是过程
  • 完成这个过程是,站在单一执行者的角度去完成这个过程

例如:中午想吃西红柿炒鸡蛋怎么办呢? 如果用面向过程的思维,可以分解为一下过程:

第一步,到超市买西红柿和鸡蛋
第二步,把西红柿洗干净切好
第三步,把鸡蛋炒好
第四步,把西红柿炒好
第五步,把鸡蛋和西红柿混在一起炒好
第六步,把炒好西红柿炒蛋端出来

面向对象

面向对象,全称OOP(Object Oriented Programming)

  • 面向对象不再关注具体的过程细节
  • 面向对象注重的是关系管理和调度

同样是西红柿炒鸡蛋,面向对象会这么做:

采购员去超市采购
洗菜员负责洗菜
切菜员负责切成
厨师负责烹饪
上菜员负责上菜

每一条都很模糊,但是每一条也明确了要干什么,面向对象就是将这些角色的调度做好。

探讨

如果以西红柿炒蛋为例,面向过程的做法,类似于一个小老板开了一个小餐厅,前前后后都由自己打点。

而面向对象的做法,类似于一个连锁饭店,分工明确,可复制性比较强。

其实我们的编程是面向过程和面向对象的叠加。调度管理部分我们采用的是面向对象,细节流程部分采用的是面向过程。

例如:西红柿炒鸡蛋

采购员去超市采购
    采购员怎么采购?具体化的流程,1,2,3...
洗菜员负责洗菜
    洗菜员怎么洗菜?具体化的流程,1,2,3...
切菜员负责切成
    切菜员怎么切菜?具体化的流程,1,2,3...
厨师负责烹饪
    厨师怎么烹饪?具体化的流程,1,2,3...
上菜员负责上菜
    上菜员怎么上菜?具体化的流程,1,2,3...