Python 初识面向对象#学习猿地

> 面向对象编程——Object Oriented Programming,简称`OOP`,是一种**以对象为中心**的程序设计思想。

>

> 面向过程编程——Procedure Oriented Programming,简称`POP`,是一种**以过程为中心**的程序设计思想。

## 理解面向过程与面向对象思想

大家先思考一个问题:把大象装进冰箱,需要几步?

小品给出的答案:三步

第一步:打开冰箱门

第二步:把大象装进去

第三步:关上冰箱门

##### 用面向过程去理解

> 上面给出的答案就是面向过程的,遇到问题后,分析解决问题的步骤,然后一步步去实现

##### 用面向对象去理解

> 是通过分析问题中需要的抽象模型,然后更具需要的功能分别去创建模型对象,最终由模型对象来完成程序

首先面向对象要解决这个问题,需要先建立出抽象模型,比如:打开冰箱门和关闭冰箱门,这都属于一个冰箱的功能,大象走进去,这就是大象的功能。到此时我们就出现了两个抽象模型,一个是冰箱,一个是大象。

冰箱具有 打开和关闭的功能,大象具有走路的能力。

分析到这里,就是面向对象的思想,具体完成的话,就是去创建冰箱和大象这两个对象,最终完成这个程序

冰箱对象-开门,大象对象-走进冰箱,冰箱对象-关门

再思考一个问题,想吃清蒸鱼怎么办?

面向过程:

1. 买鱼,买料

2. 杀鱼和清理,并且腌制

3. 放锅烧水

4. 把鱼放进去,开始蒸

5. 十分钟后开盖,把鱼端出来,浇汁

面向过程中想完成这个愿望,需要一步一步的去执行。

面向对象:

? 需要一个对象:大厨

? 告诉大厨,我想吃清蒸鱼

面向对象就是调用对象去解决问题,具体的对象如何去解决呢?

大厨这个对象肯定也是一步步完成。但是对于我来说,就是调用了对象。而对象去完成这个过程。

当然了最终面向对象中是有面向过程的体现的。

### 面向过程和面向对象的区别和优缺点?

#### 一,面向过程

>  面向过程的核心是过程,过程就是指解决问题的步骤。

优缺点:

+ 优点: 将负责的问题流程化,进而实现简答化

+ 缺点:扩展性差(更新,维护,迭代)

总结:在去完成一些简单的程序时,可以使用面向过程去解决。但是如果有复杂的程序或任务,而且需要不断的进行迭代和维护,那么肯定是优先选择面向对象的编程思想

#### 二,面向对象

> 面向对象的核心是对象,是一个特征和功能的综合体

优缺点:

+ 优点:可扩展性高

+ 缺点:编程复杂度相对面向过程高一些。指的是计算机在执行面向对象的程序时的性能表现

### 后面如何去学习面向对象编程?

1. 理解面向对象编程的思想

2. 学习面向对象编程的语法

### 认识类与对象

类:类是对象的一个抽象的概念

对象(实例):对象就是由类的创建的实例

类和对象的关系就是 模具与铸件的关系

1. 类是由对象总结而来的,总结的这个过程叫做抽象

2. 对象是由类具体实施出来的,这个过程叫做实例化

如果你现在有点迷糊,那你想一想,

+ 水果是一个对象还是一个类?

+ 汽车是一个对象还是一个类?

+ 手机是一个对象还是一个类?

再来想一个问题,我现在给大家上课,用的是一个笔记本电脑,

请问我当前正在使用的这个笔记本电脑是一个对象还是一个类?

笔记本电脑特征:金属外壳,优美的外观

笔记本电脑功能:给大家制作课程,编辑代码,听音乐。。。

## 面向对象编程的基本实现

> 如果需要实例一个对象,那么需要先抽象一个类

例如需要创建一个汽车对象

首先需要抽象一个汽车类:汽车类就相当于一个设计图纸一样。

由这个设计图纸去创建(实例)出来的真实汽车就是一个对象

如何创建一个类,通过class关键字来定义一个类

示例:

```python

# 定义一个汽车的类

class Cart():

pass

‘‘‘

类名的书写规范,建议使用驼峰命名法

大驼峰:MyCar XiaoMi

小驼峰:myCar xiaoMi

‘‘‘

```

类中需要声明什么内容?

```

一个类有特征和功能两个内容组成:

特征就是一个描述:颜色:白色,品牌:奥迪,排量:2.4 。。。

功能就是一个能力:拉货,带美女兜风。。。。

特征在编程中就是一个变量,在类中称为 属性

功能在编程中就是一个函数,在类中称为 方法

类中属性一般定义在前面,方法定义在后面

```

示例:

```python

# 定义一个汽车的类

class Cart():

# 属性 ==> 特征 ==> 变量

color = ‘白色‘  # 表示颜色属性

brand = ‘奥迪‘  # 表示品牌属性

pailiang = 2.4 # 表示排列属性

# 方法 ==> 功能 ==> 函数

def luohuo(self):

print(‘小汽车能拉货‘)

def doufeng(self):

print(‘小汽车能兜风‘)

def bamei(self):

print(‘带妹子去嗨。。。‘)

```

如何通过类实例化对象并使用?

```python

# 如何去使用这个类?

# 通过类实例化一个对象

aodiobj =  Cart()

# print(aodiobj,type(aodiobj))

# <__main__.Cart object at 0x106f08550> <class ‘__main__.Cart‘>

# 调用对象的方法

aodiobj.bamei()

# 获取对象的属性

print(aodiobj.brand)

```

---

### 成员属性和成员方法的操作

#### 对象操作成员

```

成员属性:

访问:  对象.成员属性名

修改:  对象.成员属性名法 = 新值。(此时等于给这个对象创建了一个自己的属性)

添加:  对象.新成员属性 = 值 (此时是给这个对象自己新建了一个属性)

删除:  del 对象.成员属性 (注意:只能删除这个对象自己的属性)

成员方法:

访问:  对象.成员方法名()

修改:  对象.成员方法名 = func(此时等于给这个对象创建了一个自己的方法)

添加:  对象.方法名 = func (此时是给这个对象自己新建了一个方法)

删除:  del 对象.方法名 (注意:只能删除这个对象自己的方法)

```

#### 类操作成员(不推荐)

```

成员属性:

访问:  类名.成员属性名

修改:  类名.成员属性名法 = 新值。(此时通过这个类创建的对象都具有这个属性)

添加:  类名.新成员属性 = 值 (此时通过这个类创建的对象都具有这个属性)

删除:  del 类名.成员属性 (注意:删除这个类的属性后,这个类创建的对象也没有这几个属性了)

成员方法:

访问:  类名.成员方法名()

修改:  类名.成员方法名 = func(此时通过类创建的对象都被修改)

添加:  类名.方法名 = func (此时通过类创建的对象都被修改)

删除:  del 类名.方法名 (注意:此时通过类创建的对象都被修改)

```

#### 总结

+ 一个类可以实例化出多个对象,每个对象在内存中都独立存在的

+ 当通过类实例化对象时,并不会把类中的成员复制一份给对象,而去给对象了一个引用

+ 访问对象成员的时候,如果对象自己没有这个成员,对象会向实例化它的类去查找

+ 对象成员的添加和修改,都只会影响当前对象自己,不会影响类和其它对象

+ 删除对象的成员时,必须是该对象自己具备的成员才可以,不能删除类中引用的成员

+ 对类的成员操作,会影响通过这个类创建的对象,包括之前创建的。

----

#### `__del__`析构方法

```

__del__ 析构方法

触发机制:析构方法会在对象被销毁时自动触发

作用:关闭一些开发的资源

注意:是对象被销毁时触发了析构方法,而不是析构方法销毁了对象

对象会在哪些情况下被销毁?

1。 当程序执行完毕,内存中所有的资源都会被销毁释放

2。 使用 del 删除时

3。 对象没有被引用时,会自动销毁

```

示例:

> 定义一个类,完成一个日志的记录

>    调用这个对象的时候,传递一个日志信息

>    这个对象会创建一个文件,开始写入,并在最后关闭这个文件

```python

import time

class writeLog():

# 成员属性

# 文件的路径

fileurl = ‘./‘

# 日志文件的名称

filename = ‘2019-09-19‘

# 初识化  打开文件

def __init__(self):

#完成文件的打开

print(‘初始化方法触发类。完成文件的打开‘)

self.fileobj = open(self.fileurl+self.filename,‘a+‘,encoding=‘utf-8‘)

# 写日志的方法

def log(self,s):

print(f‘把日志:{s} 写入文件中‘)

# 析构方法

def __del__(self):

print(‘析构方法触发了,关闭打开的文件‘)

# 在对象被销毁时,关闭在初始化方法中打开的文件对象

self.fileobj.close()

```

掌握学习方法,不如会弯道超车!

学习猿地:成就自己的只需一套精品!

原文地址:https://www.cnblogs.com/itxdl/p/12522519.html

时间: 2024-11-04 22:22:13

Python 初识面向对象#学习猿地的相关文章

python 初识面向对象

一.初识面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可. 缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身. 应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等. 面向对象的程序设计的核心是对象(上帝式思维),要理解对象为何物,必须把自

Python数据库操作 Python操作mysql#学习猿地

# python操作mysql mysql数据库可以应用于多种编程语言,包括 PHP,Java,Go,Python 不同编程语言操作mysql,都是使用了mysql提供的API接口. 如果直接操作mysql提供的API相对复杂一些,因为不同的编程语言都有不同的封装好的包或者模块进行数据库的相关操作. 在python中也有很多的包或模块进行mysql数据库的操作,比较知名的包包括 pymysql,mysqldb... ### 安装pymysql pip install pymysql ### py

python Day6 面向对象学习

面向过程 VS 面向对象 编程范式 编程是 程序 员 用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程 , 一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种不同的方式, 对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式. 不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路, 大多数语言只支持一种编程范式,当然也有些语言可以同时支持多种编程范式. 两种最重要的编程范式分别是面向过

python初识面向对象

类与对象的关系类: 就是创建对象的第一步,先写类对象: 通过类来创建对象 类是对某事物的归类(类就是对属性和方法的封装)    __init__(self, 参数): 参数一般作为属性设置给对象,对象就是self,对属性的封装,(根据需要,如果在类中传参就用__init__,如果不需要传参,就直在类里定义函数即可)    def 方法(self, 参数): 方法,第一个参数一般是固定的self,当前类的对象创建类:    class 类名: 对象是某类型的一个具体创建对象:    变量 = 类名

Python数据库操作 初识mysql和mysql基本操作#学习猿地

# 3.认识和操作一下mysql的基本命令 #### 登录mysql,在终端输入以下命令,进行登录 `mysql -u root -p` ```sql MacBook-Pro:~ yc$ mysql -u root -p Enter password: Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.7.28 Homebrew Cop

8、python全栈之路-初识面向对象

八.初识面向对象 http://www.cnblogs.com/Eva-J/articles/7293890.html#_label1 1.楔子 #面向对象编程 #面向对象的思想 #对象就是一个实实在在的,可以准确描述出来的实体,比如说egg,alex #面向对象的编程是一种上帝视角的切换 #之前你使用的面向过程的编程是面向结果去编程,一个流水线下来有固定的结果 #好想  可扩展性差 容易引起代码的安全问题 #面向对象 #类:具有相同属性和方法的一类事物 #对象:具有具体的属性的事物 2.初识类

Python学习—面向对象学习下

面向对象下 1.构造方法与析构方法 class People(object): # 构造方法:__init__(),在实例化对象时自动执行的方法 def __init__(self, name, age): self.name = name self.age = age print("创建对象成功.......") # 析构函数:__del__(), 当你删除对象时,自动调用的方法 # 删除对象:del 对象名 def __del__(self): print("删除对象成功

Python 面向对象学习(一)

1. 面向对象的概念 面向对象编程--Object Oriented Programming,是我们在编程中解决问题的一个新的方式,一种编程的思想.而在常见的编程中,我们是以面向过程的方式解决的,首先我们了解一下面向对象与面向过程的基本概念. 1.1 面向过程 我们把完成一件工作的各个步骤依次编写代码,每一个步骤都可以封装成一个函数,在使用是只需要依次调用即可.特殊的,一个步骤也可以分成很多小的步骤,使用更小的函数来解决. 例如,把大象装进冰箱需要几步? 把冰箱门打开 把大象装进冰箱 把冰箱们关

Python运算符与流程控制 #学习猿地

本章节主要说明Python的运算符.举个简单的例子 **4 + 5 = 9** . 例子中,**4** 和 **5** 被称为**操作数**,"**+**" 称为运算符. Python语言支持以下类型的运算符: - 算术运算符 - 比较(关系)运算符 - 赋值运算符 - 逻辑运算符 - 位运算符 - 成员运算符 - 身份运算符 - 运算符优先级 接下来让我们一个个来学习Python的运算符. ------ ## Python算术运算符 | 运算符 | 描述