Python面向对象概述

397 阅读5分钟

这是我参与更文挑战的第 18 天,活动详情查看: 更文挑战

1. 概述

我们都知道Python一切皆是对象,本期将开始学习面向对象的内容。

主要会介绍三个方面,来详细学习面向对象的概念。

  1. 面向对象演练
  2. 对象的进化
  3. 类和对象
1.1 面向对象演变

假设,我们接到一个任务,如何自行车

这时候,我们就会大致这样思考

  1. 手推着自行车,保持车与身体平衡
  2. 坐上自行车
  3. 双脚踏上脚踏板,向前滑
  4. 骑上自行车

在骑自行车的这个过程,就是使用的面向过程的思维,第一步做什么第二步做什么,直到完成任务为止。面向过程的思维,是站在执行者角度去看问题的,一般适用于简单问题上。

面向过程

完成了如何骑自行车,我们又收到了一个,更难的任务如何制作一辆自行车?

这时候,我们还是向前一个任务去思考的话,根本找不着手开始的地方

这时候就是需要我们转换成另外的一种思维,如何设计自行车

哪我们就会有了新的思路,把自行车拆分成不同零件如:

  1. 车手把
  2. 轮胎
  3. 坐垫
  4. 车链
  5. 脚踏板

我们把自行车分成不同的零件,然后分批找到对应的厂家,每个厂家都有自己的生产线去生产自行车的零件,我们这时候直接去向各个厂家购买不同的零件之后,进行组装就制作好了一辆自行车。

面向对象思维

以上这个制作自行车的过程,我们就采用了面向对象的思维。

面向对象思维思考方式:遇到复杂问题,先从问题中找名词,然后根据确立的名词哪些可以作为类,在根据问题确定类的属性和方法,确定类之间的关系。

1.2 面向对象VS面向过程

面向对象编程的使程序的扩展性更强,可读性更好,使的编程可以像搭积木一样简单

面向对象编程将数据和操作数据相关的方法封装到对象中,组织代码合数据方式更加接近人的思维,从而大大提高编程的效率。

面向过程,主要焦点在如何解决单一问题上,思路简单。

总之,面向对象和面向过程的区别:

  • 都是解决问题的思维方式,都是代码组织的方式
  • 解决简单问题可以使用面向过程
  • 解决复杂问题:宏观上使用面向对象把握,微观处理仍然是面向对象过程
  • 面向对象的主要特征主要有:继承,多态,封装

2.对象的进化

为什么会有对象?

起初,编程语言开发出来时,只是解决简单问题的。但是随着需求的复杂化,编程语言也开始进化。从之前出来简单的数据如字符串、数字,后面数据变多有了列表字典等;数据类型复杂化之后出来了结构体;处理数据和逻辑变复杂,出来啦对象。

  1. 简单数据:字符串、数组。如"JueJing",30

  2. 数组:将同类型的数据放在一起。如字符数组["Jue","Jing"]

  3. 结构体:将不同数据放在一起。如列表["age",10,20.1]

  4. 对象:将不同类型的数据、函数放在一起。

3. 类和对象

3.1 什么是类

类,通俗的讲就是特指某一类对象的统称,没有具体的实物的。

我们来看看几个例子

类:动物

对象:狗、猫、大象

不管是狗、猫还是大象,都是属于动物这个类别,所以猫狗大象是动物的对象。

类由数据属性(变量)和方法(函数)组成。

class 类名:
   
   多变量
   
   多函数

类定义

注意点:

  • 类名必须符合标识符点规则。推荐首字母大写,多个单词使用驼峰式命名
  • 类里面包含属性和函数
  • 属性用来描述数据,函数用来描述这些数据进行相关操作
3.2 什么是对象

对象是由类创建具体的实物。

变量 = 类名() #创建类一个实例
变量.类方法() #执行类里面的方法

从一个类创建对象时,每个对象会共享这个类的方法,但属性值不会共享。

对象

怎么理解呢?

举个例子:

  1. 创建一个动物对象猫和狗,猫和狗都是属于动物这个类

  2. 它们具有动物行为如吃东西、睡觉

  3. 但是由于猫和狗它们的外形和性格不一样

    (1) 猫咪身材娇小高冷

    (2) 狗体型大粘人

  4. 它们身上大特点,通过属性来加以区分

3.3 小试牛刀

我们来创建一个Animal类,实例对象为猫和狗

class Animal:
    def __init__(self,name,food): # Animal的属性特征
        self.name = name
        self.food = food

    def like_food(self):        # Animal行为
        print(self.name,'的最喜欢的食物是',self.food)

#创建猫实例
cat = Animal("Tom","fish")
cat.like_food()
#创建狗实例
dog = Animal("Bob","meat")
dog.like_food()

类练习结果

总结

今天,我们对面向对象如何发展的,面向对象思想是怎么样的。对面向对象有了大概的认识。接下来,我们会逐一地学习面向对象里具体使用方法。

好啦,以上是本期内容,我们下期见~