面向对象

相比较于函数,面向对象更大封装,根据职责在一个对象中封装多个方法

1.在完成某一个需求前,首先要确定职责——就是要做的事情(方法)
2.根据职责确定不同的对象,在对象内部封装不同的方法
3.最后完成的代码,就是顺序地让不同的对象调用不同的方法

特点

1.注重对象和职责,不同的对象承担不同的职责
2.更加适应对复杂的需求变化,是专门对复杂项目的开发,提供固定的套路

类和对象

对象 是面向对象编程的 两个 核心概念

是对一群具有相同特征行为 的事物的统称, 是抽象的, 不能直接使用

特征被称为属性
行为被称为方法

相当于一个模板,是负责创建对象

在程序开发中,要设计一个类,通常需要满足以下三个要素:

 1.类名这类事物的名字需要满足 大驼峰命名法2.属性这类事物具有什么样的特征3.方法这类事物具有什么样的行为

大驼峰命名法

1.首先每一个单词的首字母大写
2.单词与单词之间没有下划线

类名的确定

名词提炼法 分析 整个业务流程, 出现的 名词, 通常就是找到的类

属性和方法的确定

对 对象的特征描述,通常可以定义为属性
对象具有的行为(动词),通常可以定义为方法

**提示:**需求中没有涉及的需求或方法在设计类时,不需要考虑

dir内置函数


定义只包含方法的类

在python中要定义一个只包含方法的类,语法格式如下:

class 类名:def 方法1(self, 参数列表):passdef 方法2(self, 参数列表):pass

方法的定义格式和之前学习的函数 几乎一样
区别在于第一个函数必须是 self,

**注意:**类名的命名规则要符合大驼峰命名法

创建对象

当一个类定义完成之后,要使用这个类来创建对象,语法格式如下:

对象变量 = 类名()

引用概念的强调

在面向对象开发时, 引用的概念是同样适用的

在 python 使用类创建对象之后,变量中仍然记录的是 对象在内存中的地址
也就是变量引用了新建的猫对象
使用 print 输出变量对象,默认情况下,是能够输出这个变量 引用的对象 是 有哪一个类创建的对象, 以及 在内存中地址(十六进制数表示)

使用 self 方法

由 哪一个对象 调用的方法, 方法内的 self 就是哪一个对象的引用

在类封装的方法内部, self 就表示 当前调用方法的对象自己
调用方法时, 程序员不需要传递 self 参数
在方法内部
可以通过 self. 访问对象的属性
也可以通过 self. 调用其他的对象方法

初始化方法

当使用 **类名()**创建对象时,会自动执行以下操作:
1.为对象在内存中 分配空间——创建对象
2.为对象的属性 设置初始值——初始化方法(init)

这个初始化方法就是 __init __方法,__init __就是对象的内置方法

__init __方法是专门用来定义一个类 具有哪些属性的方法!!!

在初始化方法内部定义属性

在 __ init__方法内部使用 self.属性名 = 属性的初始值 就可以定义属性
定义属性之后,在使用类创建对象,都会拥有该属性

改造初始化方法——初始化的同时设置初始值

在开发中,如果希望在创建对象的同时,就设置对象的属性,可以对__init __方法进行改造
1.把希望设置的初始值定义为__init __方法的参数
2.在方法内部使用 self.属性 = 形参 接收外部传递的参数
3.在创建对象时,使用 **类名(属性1, 属性2…)**调用

内置方法和属性

序号 方法名 类型 作用
01 __del __ 方法 对象被从内存中销毁前,会自动调用
02 __str __ 方法 返回对象的描述信息,print 函数输出使用

__del __方法

在 python 中
使用 类名()创建对象时,为对象分配完空间后,会自动调用__init __ 方法
当一个对象被从内存中销毁前,会自动调用 __del __方法

生命周期
一个对象从调用 类名() 创建,生命周期开始
一个对象的 __del __方法一旦被调用,生命周期结束
在对象的生命周期内,可以访问对象属性,或者让对象调用方法

__str __方法

在 python 中,使用 print 输出对象变量,默认情况下,会输出这个变量是由哪一个类创建的对象,以及在内存中的地址(十六进制表示)
如果在开发中,希望使用 print 输出变量使用时,能够打印自定的内容,就可以利用 __str __ 这个内置方法了

注意:__str __ 方法必须返回一个字符串

例:

class Cat:def __init__(self, new_name):self.name = new_nameprint("% s 来了" % self.name)def __del__(self):print("% s 走了" % self.name)def __str__(self):return "我是小猫 % s" % self.nametom = Cat("Tom")
print(tom)

封装

1.封装是面向对象编程的一大特点
2.面向对象编程的第一步——将 属性方法 封装到一个抽象的
3.外界使用类创建对象,然后让对象调用方法
4.对象方法的细节都被封装在类的内部

提示:
1.在对象的方法内部,是可以直接访问对象的属性的
2.同一个类中创建的多个对象之间,属性互不干扰

定义没有初始值的属性

在定义属性时,如果不知道设置什么初始值,就可以设置为 None

None关键字表示什么也没有
表示一个空对象没有方法和属性,是一个特殊的常量
可以将None赋值给任何一个变量

身份运算符

身份运算符用来比较两个对象的 内存地址 是否一致——是否对同一个对象的引用

在python中针对None比较时,建议使用is判断

运算符 描述 实例
is is 是判断两个标识符是不是引用同一个对象 x is y,类似于id(x)== id(y)
is not is not是判断两个标识符是不是引用不同对象 x is not y,类似于id(x)!= id(y)

is 与 == 区别

is 用于判断 两个变量 引用对象是否为同一个
== 用于判断 引用变量的值 是否相同

python———面向对象程序设计相关推荐

  1. python面向对象程序设计实训学生自我总结_Python面向对象程序设计示例小结

    本文实例讲述了Python面向对象程序设计.分享给大家供大家参考,具体如下: 示例1: #encoding:utf-8 '''example 1 class test: def __init__(se ...

  2. python核心编程:Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解

    这篇文章主要介绍了Python面向对象程序设计中类的定义.实例化.封装及私有变量/方法,结合具体实例形式较为详细的分析了Python面向对象程序设计中类的定义.实例化.封装.私有变量.私有方法等相关使 ...

  3. python面向对象程序设计实践(初级)——以《三国演义》中三英大战吕布为例

    python面向对象程序设计实践(初级) --以<三国演义>中三英大战吕布为例 设计实现思路: 定义武器类:武器名,攻击力 定义人物类:继承武器类,姓名,生命值 延时函数:延时0.5秒 实 ...

  4. python面向对象程序设计实践(高级)——以《三国演义》中三英大战吕布为例

    python面向对象程序设计实践(初级) --以<三国演义>中三英大战吕布为例 设计实现思路: 设计类 定义武器类:武器名,攻击力 定义人物类:继承武器类,姓名,生命值 设计函数简化对象的 ...

  5. Python面向对象程序设计中对象析构方法的调用时机

    开学第一课:一定不要这样问老师Python问题 中国大学MOOC"Python程序设计基础"第6次开课时间 董付国老师Python系列教材推荐与选用参考 ============= ...

  6. python面向对象程序设计董付国ppt_(董付国)Python 学习笔记---Python面向对象程序设计(1)...

    面向对象程序设计 面向对象程序设计(Object Oriented Programming,OOP)主要针对大型软件设计而提出,使得软件设计更加灵活,能够很好地支持代码复用和设计复用,并且使得代码具有 ...

  7. python面向对象程序设计的三个特征_哪些是面向对象程序设计的三大特征

    展开全部 封装性.继承性.多态性. 1.封装性: 具备封装性(Encapsulation)的面向对象编程隐藏了某一方62616964757a686964616fe78988e69d8331333433 ...

  8. Python 面向对象程序设计(一)

    面向对象程序设计 # 面向对象程序设计(英语:Object-oriented programming,缩写:OOP)是一种程序设计范型,同时也是一种程序开发的方法. #对象指的是类的实例.它将对象作为 ...

  9. 学堂在线python面向对象程序设计试题_面向对象程序设计-中国大学mooc-试题题目及答案...

    面向对象程序设计-中国大学mooc-试题题目及答案 更多相关问题 [单选题]下面属于"新现实主义"社会题材的影片有( ). A. <小偷家族> B. <偷自行车的 ...

  10. Python面向对象程序设计期末考试复习题及答案(含编程题)

    一.选择题 1.关于面向过程和面向对象,下列说法错误的是(B). A.面向过程和面向对象都是解决问题的一种思路 B.面向过程是基于面向对象的 C.面向过程强调的是解决问题的步骤 D.面向对象强调的是解 ...

最新文章

  1. 这可能是最全的机器学习工具手册!
  2. 费曼:所有的科学知识都是不确定的
  3. go操作网页元素_UI自动化21heliumS元素定位方式
  4. IP协议号(TCP协议号/UDP协议号)
  5. Java IO流总结
  6. python中除法 / 和// 区别 以及np.divide,np.true_divide,np.floor_divide方法区别
  7. HDU 5067 Harry And Dig Machine:TSP(旅行商)
  8. [Python] L1-005. 考试座位号-PAT团体程序设计天梯赛GPLT
  9. 工业机器人的构成和分类
  10. 三分学习(解决凸函数or凹函数的极值)
  11. kali 利用msf通过win7永恒之蓝漏洞获取权限
  12. 下图是微型计算机cpu的结构图它由控制器,下图是微型计算机CPU的结构图,它由控制器、( )、寄存器等构成。...
  13. 阿里飞冰官网 Icework 一个集成框架 构建前端工具
  14. Can't create database 'xxx' (errno: 28)
  15. 本地连接一会连接一会断开怎么回事?
  16. DevOps关键指标
  17. 第十九篇:JAVA加密解密之RSA算法
  18. 基于STM32F407 HAL库的Flash编程操作
  19. 用Windows 8开发第一个Windows应用商店应用
  20. 下载高通 SDM845 Android 11.0 开源代码

热门文章

  1. 算法训练 审美课(《审美的历程》课上有n位学生,帅老师展示了m幅画,其中有些是梵高的作品,另外的都出自五岁小朋友之手。老师请同学们分辨哪些画的作者是梵高,但是老师自己并没有答案,因为这些画看上去都像)
  2. 双目立体视觉笔记(二)
  3. 标准C 语言程序的源文件名的默认后缀,c语言源程序文件名的后缀是什么
  4. 计算机存在其他连接设备错误,USB设备连接电脑失败的解决方法
  5. 京东苏宁战正酣 搭车营销莫等闲
  6. [附源码]JAVA毕业设计的问卷调查系统设计与实现(系统+LW)
  7. cad生成最小包围盒lisp_cad生成最小包围盒lisp_点集的最小包围圆(用LISP求解)
  8. Apache Tomcat 缓慢的HTTP拒绝服务攻击
  9. 【大咖说*对话生态——聚力同行,迈向零碳未来】
  10. WSDL文档中address location生成错误问题解决