类和对象_月隐学python第15课
目录
1 ⾯向对象的思想
2. 类和对象
2.1 类和对象的概念
2.2 类的定义
2.3 成员⽅法
2.4 对象的创建
2.5 成员属性
3 构造和析构
3.1 构造⽅法
3.2 析构⽅法
3.3 __str__
1 ⾯向对象的思想
⾯向过程:⾯向处理,更多的是从计算机⻆度思考,注重计算每⼀个步骤,程序更像是⼀本cpu操作⼿册。
⾯向对象:以⽇常⽣活的⻆度思考问题的解决,更接近⼈的思维⽅式,让⼈可以从更⾼的层⾯考虑系统的构建
以你请朋友吃饭为例:
⾯向对象的优点:
- ⾯向对象更加适合做应⽤的开发
- ⾯向对象可以使你的代码更加优雅和紧凑
- ⾯向对象开发效率更⾼
- ⾯向对象代码复⽤度更⾼、可维护性更好
⾯向对象是⼀种思维⽅式,它认为万事万物皆对象,程序是由多个对象协作共同完成功能的,所以以后我们要从⾯向过程转向⾯向对象。以⾯向对象的⽅式考虑程序的构建。⾯向对象的核⼼是: 类和对象
2. 类和对象
2.1 类和对象的概念
⽣活⻆度
- 类:具有相同特征和⾏为的对象的集合,是⼀个概念
- 对象:客观存在的⼀切事物,是类的实例
类: 汽⻋ 超级英雄 电脑 杯⼦
对象: 红⾊的宝⻢ 美国队⻓ 桌上的mac pro ⽼王的⿊⾊杯⼦
程序⻆度
- 类:⽤户⾃定义的数据类型,是模板,不占⽤内存
- 对象:由类定义的变量,占⽤内存
2.2 类的定义
注意:
- 类定义必须以关键字class开头
- 类名要符合标识符的规范
- 类名⼀般⽤⼤驼峰⻛格: 每个单词⾸字⺟⼤写,其它⼩写 ,例如MyBook YouMoney
- 类体必须缩进
- 在python3中类默认继承object,所以可以这样写 class Dog:,它等价于class Dog(object):
- ⼀个⽂件⾥只放⼀个类
2.3 成员⽅法
成员⽅法其实就是函数,作⽤域在类内,成员⽅法的第⼀个参数必须是self, self代表当前对象,也就是调⽤这个⽅法的对象,这个参数由系统传递。
注意:
- self参数在调⽤的时候不必传值,由系统传值
- self只能在实例⽅法中使⽤
- ⽅法和函数的区别:
- ⽅法作⽤域属于类,所以即便和普通函数重名,也不会被覆盖
- ⽅法的第⼀个参数必须是self,但函数不要求
- ⽅法必须通过对象调⽤,⽽函数不需要
- ⽅法的第⼀个参数self其实可以使任何合法标识符,不过⼀般约定俗成都是self
- ⽅法的连贯调⽤
2.4 对象的创建
对象的创建过程也称之为对象的实例化过程,也就是定义了⼀个类类型的变量或者称之为实例(instance)的过程
2.5 成员属性
成员属性描述的是对象的静态特征,⽐如说狗名字、品种等,其实就是⼀个变量,作⽤域属于对象,不会和类外的全局变量冲突。 python中成员属性可以在构造函数中添加。成员属性属于对象,每个对象的成员属性的值都不同在构造函数中添加的属性属于所有对象(重点)
3 构造和析构
3.1 构造⽅法
- ⽬的:构造⽅法⽤于初始化对象(不创建对象),可以在构造⽅法中添加成员属性
- 时机:实例化对象的时候⾃动调⽤
- 参数:第⼀个参数必须是self,其它参数根据需要⾃⼰定义
- 返回值:不返回值,或者说返回None,不应该返回任何其他值
注意:
- 如果没有定义构造⽅法,系统会⽣成⼀个⽆参构造⽅法,如果⾃⼰定义了构造⽅法,则系统不会⾃动⽣成
- ⼀个类只能有⼀个构造⽅法,如果定义多个,后⾯的会覆盖前⾯的
- 构造函数由系统在实例化对象时⾃动调⽤,不要⾃⼰调⽤
3.2 析构⽅法
- ⽬的:对象销毁时,释放资源
- 时机:对象销毁时由系统⾃动调⽤
- 参数:除了self外,没有其他参数
- 返回值:不返回值,或者说返回None。
语法:
3.3 __str__
- ⽬的:将对象转化为字符串
- 时机:凡是涉及对象向字符串转换的都会调⽤(print,str)
- 参数: self
- 返回值:字符串
__repr__ 作⽤同 __str__ ,不过是给解释器看的
类和对象_月隐学python第15课相关推荐
- python编程基础_月隐学python第2课
python编程基础_月隐学python第2课 学习目标 掌握变量的输入和输出 掌握数据类型的基本概念 掌握算数运算 1.变量的输入和输出 1.1 变量输入 使用input输入 input用于输入数据 ...
- 类成员_月隐学python第17课
目录 1.类成员 2 实例成员的动态绑定 3. 系统魔术⽅法 3.1 __init__ 和 __new__ 3.2 算数运算符重载 3.3 迭代器 3.4 __call__ 4.单例设计模式 4.1. ...
- 函数进阶_月隐学python第11课
目录 1.函数类型 2. 匿名函数 3.传入函数(理解) 4.闭包 5.偏函数 6.变量的作用域 6.1 变量作用域的分类 6.2 变量作⽤域查找规则 6.3 全局变量和局部变量 6.4 global ...
- 多态_月隐学python第18课
目录 1.多态 2.其它 2.1 类的信息 2.2 对象信息 2.3 常⽤函数 1.多态 其他语⾔中所谓多态,指的是⼀个⽅法多种实现,在继承前提下,⽗类规定了⼦类的接⼝,使得可以相同的⽅式调⽤⼦类的⽅ ...
- 继承_月隐学python第16课
目录 1.封装 1.1 属性私有化 1.2 属性装饰器 1.3 成员⽅法私有化 2.继承 2.1 单继承 2.2 多继承(理解.了解) 3.类成员 作业 初级 中级 ⾯向对象三⼤特征:封装.继承.多态 ...
- 字典与集合_月隐学python第8课
一.字典 字典属于无序列,元素存放无序,是通过哈希方式进行数据存取的,字典是一个可变容器,字典中保存一个的键值对: key : value.我们通过key来获取对应的值,很类似我们的汉语字典. 字典中 ...
- 字符串_月隐学python第7课
一.字符串 字符串就是由若干个不同的unicode字符组成的不可变序列 1 .字符串创建 2.获取字符 因为是不可变序列,所以不能修改单个字符: 凡是修改字符串的操作都产生新串 3.字符串转义 常⻅转 ...
- 列表_月隐学python第6课
在python中,有这样一些类型,它们的成员是有序排列的,并且可以通过下标访问成员,这些类型称之为有序序列,包括:列表.元组和字符串:其中列表的成员可修改,属于可变序列,字符串和元组,成员不可修改,属 ...
- 正则表达式_月隐学python第20课
目录 1.为什么使⽤正则表达式 2.正则表达式的组成 3.正则常⽤⽅法 3.1 re.match() 3.2 re.search() 3.3 re.findall() 3.4 re.sp ...
最新文章
- 8086汇编4位bcd码_51单片机用汇编语言实现BCD码转换
- Git_git的诞生
- Java 对象初始化过程
- UIButton的创建与释放问题
- 写一个Windows上的守护进程(4)日志其余
- Linux修行学习,网站持更
- HDU6383 p1m2
- 校园网锐捷Ubuntu12.04LTS
- php数组用递归函数求和,如何用php递归函进行数字累加操作?php递归函数累加求和...
- linux -----各种颜色代表什么
- 教育变革背景下幼儿园园长领导力研究
- rn源码ios_携程开源RN开发框架CRN
- pynq-z2 使用PL做流水灯
- 多线程三种设计模式-
- Spring mvc 的生命周期
- 网络营销的多种表现形式
- 深入理解Linux网络技术内幕学习笔记第十九章:因特网协议第四版(IPv4):Linux的原理和功能
- SPARQL基础知识
- 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第32讲:PHP 构造方法、析构方法
- 计算机毕业设计ssmAI学院教务信息管理系统lx9v9系统+程序+源码+lw+远程部署
热门文章
- bubble click event handling
- SCN exercise navigation的实现原理
- when is SAP UI5 sap-ui-core.js loaded
- SAP Fiori My task里complete checkbox的处理
- Fiori Error message Exception raised without specific error
- 如何在调用Marketing Cloud contact创建API时增加对扩展字段的支持
- 通过ABAP business switch动态扩展一个ABAP domain
- SAP S/4HANA的扩展字段的渲染逻辑
- message show_once这个标志位的用法
- 使用LXE_SP_CHECKSPELLING_MS进行ABAP文本拼写检查