从0基础学习Python (Day13)

面向对象思想

1.面向对象编程介绍

面向对象

概述

​ 目前软件开发技术中两种主流思想:面向过程、面向对象

​ 面向过程思想出现较早,C语言

​ 面向对象思想出现较晚,C++语言,C#,Java,Python …

面向过程

​ 需要实现一个功能的时候,将人类的思维转变成为计算机的思维,然后重点去实现这个功能的每个步骤和过程,每一个步骤都需要亲力亲为

面向对象

​ 需要实现一个功能的时候,并不需要考虑其计算机实现这个功能的细节,不考虑步骤和过程,只需要关心谁去做,做的最终结果即可

例如

​ 生活中案例:吃饭

​ 面向过程:自己动手(丰衣足食)

​ 饿了->买菜->洗菜摘菜->切菜->升火->倒油->炒菜->吃饭->洗锅

​ 面向对象:衣来伸手饭来张口

​ 饿了—>下馆子–>吃饭

​ 编程中案例:三个数求平均值

​ 面向过程:

​ a接收第一个数—>b接收第二个数—>c接收第三个数—>d运算a+b---->e运算d+c—>f数数---->g----->运算e/f

​ 面向对象:

​ a接收第一个数—>b接收第二个数---->c接收第三个数—>找math对象使用avg(a,b,c)---->得到结果

2.类和对象

​ 面向对象编程的重要概念:类、对象

​ 类是在创建这个对象时,所创建的本质是一个类,将类理解为对象的抽象化概念

​ 例如:猴(类)----孙悟空(对象)

​ 人(类)----六小龄童(对象)

​ 面向对象的语言中,想要创建一个对象,就要先创建这个对象所属的类,“类”就是用来模拟现实事物的

​ 类要模拟现实世界中的事物通常需要通过两个方面来模拟:

  1. 属性:事物的特征描述信息,例如人:(姓名,姓名,年龄,身高,肤色等)。用于描述事物某个特征
  2. 行为:事物的能力行动方案,例如人:(吃饭、睡觉、打豆豆等),用于描述事物能干什么

对象

​ 对象是指类的具体表现,对象是类的具体的属性、行为的体现者:

总结

​ 类:抽象的概念,是一张"蓝图"

​ 对象:具体的实现,是一个真正的“作品”

3.类的构成

构成

​ 类(class)由3个部分组成

  1. 类的名称:类名

  2. 类的属性:类内部的一组数据变量

  3. 类的方法:类内部的一些可以操作的函数(行为)

    类的属性和方法称之为类的成员

    函数:是一个代码片段集合

    方法:类里面的函数称之为方法

人类的设计

  1. 事物的名称(类名):Person
  2. 属性:身高(height),姓名(name),年龄(age)
  3. 方法:跑(run),打(fight)

类的抽象问题

​ 如何编程显示生活呢?遇到的每个独立的事务都是一个对象

​ 拥有相同或(类似)属性、行为的所有对象都可以抽象出一个类来描述

​ 如:英雄(鲁班七号)分析:

​ 鲁班—类(属性:身高、颜色。。方法:跑、攻击、技能)

​ 炮弹—类(属性:形状、颜色、攻击力…方法:飞、爆炸…)

​ 手雷—类(属性:…方法…)

​ 飞船—类(属性: …方法…)

4.类的定义

定义一个类格式如下

class 类名:成员(方法)
# class Person:经典类
#     pass# class Person():
#     passclass Person(object):  新式类pass

定义一个人类

class Person(object):def info(self):print("人在塔在,德玛西亚!")

说明

  1. 定义类的时候有(两类)三种方式:新式类和两种经典类,上面代码中的最后一个Person为新式类 ,前两种是经典类
  2. object是Python中所有的类的最顶级父类
  3. 类的命名规则严格按照大驼峰命名法进行
  4. 上例中的info是一个实例方法,类里面的方法中的第一个参数一般都是self,self表示当前的实例对象自身,当然这个self换为其他的名称也行,其作用是一个变量,这个变量指向了类的实例的对象的引用

5.创建对象

​ 至此发现一个问题:在面向对象的编程中如果想要创建对象,则必须先要有类,只有类创建好了,才能创建出需要的对象

创建对象格式

对象名1 = 类名()
对象名2 = 类名()
对象名3 = 类名()
luban = Person()
zhangfei = Person()
liubei = Person()

注意

  1. 如果在同一时刻的三个不同变量,赋予了相同的数据,那么这三个变量的引用是同一个引用,都指向了第一个数据存储的引用

  2. 同一时刻的三个不同变量,赋予了同一个类的三个实例对象,那么这一个类的三个实例对象引用肯定不相同

    一个类实例出来的所有对象肯定不是同一个对象

实例

​ 针对于基于某个类产生的对象,我们讲这个对象称之为类的实例

代码中的类

​ 类是将一组函数或变量进行封装到一个变量中,类名就是这个变量名,类成员就是这个变量的引用中存放的内容

​ 而类的实例就是对象,那么对象名就是一个新的变量名,对象名之后给的类可以理解为在内存中复制了一个类的引用中的内容

6.添加类成员

添加方法

​ 在类的内部直接声明函数,而且函数第一个参数一般自动为self(这个参数具有特殊的含义功能)

添加属性的格式

​ 此处的添加属性指的是给类实例的对象添加一个属性

对象名.属性名=属性值

获取属性的格式

对象名.属性名

注意

​ 通过类创建对象,然后给对象添加属性,而后才能获取对象的已有属性

7._init_()方法

作用

​ 监听对象的实例过程

魔方方法

​ 以两个下划线开头并且以两个下划线结束的方法

魔方方法的特点

  1. 他们都会有一些特殊的功能
  2. init方法:监听程序员使用该类进行实例对象的一个标志(当通过一个类实例一个对象的时候,会自动触发这个类中的init方法)

魔方方法的来源

魔方方法一般情况下都是系统提供的方法,Python中的object对象的方法

  1. 如果想使用魔方方法必须要继承object
  2. 魔方方法会在特殊的情况下被Python调用

init魔法方法的使用场景

​ 回想之前的类成员添加时,属性无法在类里面创建

​ 可以在init方法中进行添加类的必要属性

注意

​ 自定义类中没有声明__init__魔方方法,但是在新式类中默认使每个自定义类都继承了object类,因此所有的自定义类都具有__init__魔方方法

​ 如果为了能够在完成自己想要的功能,可以自己定义__init__魔方方法

  1. 如果当需要一个对象在诞生的时候就拥有某个功能,那么可以在init方法中实现
  2. 如果一个类需要统一的属性的时候,可以在init方法中为每个对象实现这些属性

有参无参

  1. 无参的init方法用于:这个类实例的所有对象具有相同的属性值
  2. 有参的init方法用于:这个类实例的每个对象都必须要自己提供的属性值的时候

8._str_()方法

作用

​ 追踪对象的属性值的变化的

​ 默认情况下创建的对象返回的是一些对象的说明及对象所在位置的16进制的一个地址

​ 如果一个类里面实现了str方法,那么创建的对象返回的就是这个方法所返回的字符串

介绍

  1. str方法不能再添加任何参数
  2. str方法必须有一个返回值,返回值必须为字符串类型

9._del_()方法

作用

​ 监听对象被销毁的事情

​ 创建对象后Python解释器默认会调用init魔法方法

​ 当每个对象被删除的时候,Python解释器也会默认调用一个方法,就是del方法

调用

​ 当这个对象的地址引用计数为0的时候才会被python给删除的,才会执行这个del方法

​ 因此:如果一个数据或者对象在程序中没有任何引用的时候才会被系统释放

释放对象

语法:

del 对象名

Day13-------END

从0基础学习Python(13)[面向对象思想]相关推荐

  1. python 内存溢出能捕获吗_从0基础学习Python (19)[面向对象开发过程中的异常(捕获异常~相关)]...

    从0基础学习Python (Day19) 面向对象开发过程中的=>异常 什么是异常 ​ 当程序在运行过程中出现的一些错误,或者语法逻辑出现问题,解释器此时无法继续正常执行了,反而出现了一些错误的 ...

  2. 0基础学习Python基础语法(0)-print()与变量

    文章目录 Python[人工智能]时代的立身武器 print 无引号 单引号的用法 双引号的用法 三引号的用法 转义字符 变量和赋值 变量的命名规范 下关预告 Demo 例子:打印 例子:转义字符 要 ...

  3. 适合0基础学习Python的路线图

    我自己是28岁转行后自学Python的,所以根据自己过去的经验总结一下.总结了一个自学 Python 的路线, 面对新手可能有以下问题 我想学习Python但不知道从哪里开始. 我不知道能不能学得好 ...

  4. 0基础学python看什么书-0基础学Python入门书籍应该看什么?

    0基础学Python入门书籍应该看什么?Python 对不少人来说是谜一样的东西不知道如何下手.从何处下手,找了很多资源几个月过去了学习陷入换乱,没没能入门Python开发.出现这种情况大多是因为没有 ...

  5. 0基础学Python入门书籍应该看什么?

    0基础学Python入门书籍应该看什么?Python 对不少人来说是谜一样的东西不知道如何下手.从何处下手,找了很多资源几个月过去了学习陷入换乱,没没能入门Python开发.出现这种情况大多是因为没有 ...

  6. 【python教程入门学习】学python要多久,0基础学python有多难

    学python要多久,0基础学python有多难,这是很多想学习python语言同学绕不开的问题,都害怕花完钱最终没有应有的回报!对于毫无经验0基础的同学来说学习python什么最重要,方向选对坚持下 ...

  7. 有c语言基础学python容易吗_学习Python需要先学C语言吗?0基础学Python难度大吗?

    今天小编要跟大家分享的文章是关于学习Python需要先学C语言吗?0基础学Python难度大吗?想要学习或者了解Python相关知识就来和小编一起看一看本篇文章吧! 1.学Python需要先学C语言吗 ...

  8. 0基础学好python难不难_零基础学习Python难不难?Python有什么优势?

    原标题:零基础学习Python难不难?Python有什么优势? Python是一种计算机程序设计语言.首先,我们普及一下编程语言的基础知识.用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个 ...

  9. Python基础学习-Python中最常见括号()、[]、{}的区别 2015-08-13 07:54 by xuxiaoxiaoxiaolu, 1138 阅读, 0 评论, 收藏, 编辑 Pytho

    Python基础学习-Python中最常见括号().[].{}的区别 2015-08-13 07:54 by xuxiaoxiaoxiaolu, 1138 阅读, 0 评论, 收藏, 编辑 Pytho ...

最新文章

  1. 顺序队列之C++实现
  2. 使用Microsoft.AspNetCore.TestHost进行完整的功能测试
  3. jquery 字符串去首尾空格_jquery $.trim()去除字符串空格详解
  4. python画三维散点图-Python 绘制酷炫的三维图步骤详解
  5. 5.7 C和C++的关系
  6. deepin linux 怎么安装软件,deepinLinux系统安装及软件安装
  7. SECS/GEM介绍
  8. sharepoint2019文件服务器,在多台服务器上安装 SharePoint Server 2016 或 SharePoint Server 2019...
  9. 路由器的下一跳计算(网关)
  10. CX8825 3.1A数码显示车充IC 适用于快充方案,2019年最新方案
  11. 北京大学开设电子游戏选修课,火“爆”到没地方坐
  12. Go语言slice详解
  13. Sqoop 实际应用及样例
  14. AI 行业发展趋势和人才需求预测
  15. 第一次作业:每段经历都是财富
  16. 第二季:5公平锁/非公平锁/可重入锁/递归锁/自旋锁谈谈你的理解?请手写一个自旋锁【Java面试题】
  17. 【面试篇】前端点滴(css/css3)
  18. Microsoft SQL Server 2000 简体中文企业版+SP4升级补丁
  19. SQLServer数据库漏洞
  20. 复盘在项目管理中的应用

热门文章

  1. 自考行政管理题库(含答案)
  2. 微信小程序+.NET(九) 小程序之简单的广告拦截
  3. 如何快速提升文章阅读量?
  4. setoolkit的钓鱼攻击
  5. SD卡无法识别怎么办?
  6. 可控硅整流电路中的波形系数
  7. houdini 常用命令
  8. 常见的DNS记录类型有哪些?如何查询DNS解析记录?
  9. 34day 新浪微博(首页)
  10. L1-068 调和平均 (10分)