类成员_月隐学python第17课
目录
1.类成员
2 实例成员的动态绑定
3. 系统魔术⽅法
3.1 __init__ 和 __new__
3.2 算数运算符重载
3.3 迭代器
3.4 __call__
4.单例设计模式
4.1、设计模式概述
4.2 单例
4.3 实现
面向对象练习题
1.类成员
类成员包括:类属性和类⽅法,不同于成员属性和成员⽅法属于对象,类属性和类⽅法属于类,可以不实例化对象,直接通过类名调⽤,这些类成员为所有对象共有,⼀般⽤于对象间通信。
- 在程序运⾏期间类属性始终存在
- 类属性
类⽅法和静态⽅法
- 类⽅法属于类,为所有对象共有,可以通过类名或对象调⽤
- 类⽅法可以⽤来访问类属性
- 静态⽅法属于类的作⽤域内的全局函数
- 类⽅法和静态⽅法的区别,类⽅法第⼀个参数是类对象,由系统传⼊,静态⽅法没有
- 共同点:静态⽅法和类⽅法都可以通过类名直接调⽤,属于类,不属于对象
2 实例成员的动态绑定
实例的属性和⽅法都可以动态绑定,也就是可以在程序运⾏期间可以给程序增加功能,这对于那些静态语⾔来说⽆异于天⽅夜谭,但对python来说⼀切皆有可能
- 给对象动态添加的属性只属于这个对象,其它对象没有该属性
- 使⽤__ slots__限制属性的动态绑定:
3. 系统魔术⽅法
3.1 __init__ 和 __new__
- __ new__ ⽤于创建⼀个对象,有返回值; __new__ 是类⽅法;__ init__ ⽤于初始化对象,没有返回值
- __new__ 默认参数是cls,系统传递的是类名, __init__ 默认参数是self,系统传递的是当前对象
- __ new__ 先于__ init__ 执⾏
3.2 算数运算符重载
在python中⾃定义类的对象也可以象系统类型⼀样完成+、 -、 *、 /、索引、切⽚等运算,这有赖于python类有运算符重载功能
3.3 迭代器
如果想让⼀个类⽤于for-in 循环则必须实现__ iter__ 和__ next__ ⽅法
3.4 __call__
如果⼀个类实现了 __call__(slef, [,*args [,**kwargs]]) ⽅法,则该类的对象可以象函数⼀样调⽤。它是实现类装饰器的基础
4.单例设计模式
4.1、设计模式概述
1. 概念:对特定问题的⼀种解决⽅案,和平台、语⾔⽆关
2. 作⽤
- 更好的理解⾯向对象
- 让你的代码更加优雅
- 使你的代码更加容易扩展和复⽤
- ⾯试时候的重点
设计模式的⼀些基本原则
- ⾼内聚,低耦合
- 单⼀职责
- 开闭原则(对修改封闭、对扩展开放)
4.2 单例
所谓单例也就是⼀个类只⽣成⼀个对象,⽆论你实例化多少对象,都是同⼀个对象
应⽤场景:数据库操作类,⽂件操作类等,可以减少资源的占⽤
4.3 实现
使⽤ __new__
面向对象练习题
1.⾯向对象的三大特征是:封装、继承、多态
2.代码补齐:
3.代码改错,并说明原因
4.以下代码输出什么
5.代码改正:
6.代码补⻬
类成员_月隐学python第17课相关推荐
- python编程基础_月隐学python第2课
python编程基础_月隐学python第2课 学习目标 掌握变量的输入和输出 掌握数据类型的基本概念 掌握算数运算 1.变量的输入和输出 1.1 变量输入 使用input输入 input用于输入数据 ...
- 类和对象_月隐学python第15课
目录 1 ⾯向对象的思想 2. 类和对象 2.1 类和对象的概念 2.2 类的定义 2.3 成员⽅法 2.4 对象的创建 2.5 成员属性 3 构造和析构 3.1 构造⽅法 3.2 析构⽅法 3.3 ...
- 继承_月隐学python第16课
目录 1.封装 1.1 属性私有化 1.2 属性装饰器 1.3 成员⽅法私有化 2.继承 2.1 单继承 2.2 多继承(理解.了解) 3.类成员 作业 初级 中级 ⾯向对象三⼤特征:封装.继承.多态 ...
- 函数进阶_月隐学python第11课
目录 1.函数类型 2. 匿名函数 3.传入函数(理解) 4.闭包 5.偏函数 6.变量的作用域 6.1 变量作用域的分类 6.2 变量作⽤域查找规则 6.3 全局变量和局部变量 6.4 global ...
- 列表_月隐学python第6课
在python中,有这样一些类型,它们的成员是有序排列的,并且可以通过下标访问成员,这些类型称之为有序序列,包括:列表.元组和字符串:其中列表的成员可修改,属于可变序列,字符串和元组,成员不可修改,属 ...
- 数据类型和运算符_月隐学python第3课
1.类型判断 我们可以使⽤用type来返回数据类型和⽤用isinstance判断数据类型 2. 运算符和表达式 在数学上为了了计算结果,我们会写⼀一些式⼦子计算,例例如: 30 + 5 这是数学中的算 ...
- 异常处理_月隐学python第19课
目录 1. 异常处理 1.1 try-except语句 1.3 抛出异常 1.4 异常嵌套 1.5 assert断⾔ 1.6 ⾃定义异常类 作业: 初级 中级 1. 异常处理 错误指的是代码有语法问题 ...
- 多态_月隐学python第18课
目录 1.多态 2.其它 2.1 类的信息 2.2 对象信息 2.3 常⽤函数 1.多态 其他语⾔中所谓多态,指的是⼀个⽅法多种实现,在继承前提下,⽗类规定了⼦类的接⼝,使得可以相同的⽅式调⽤⼦类的⽅ ...
- 字典与集合_月隐学python第8课
一.字典 字典属于无序列,元素存放无序,是通过哈希方式进行数据存取的,字典是一个可变容器,字典中保存一个的键值对: key : value.我们通过key来获取对应的值,很类似我们的汉语字典. 字典中 ...
最新文章
- CentOS下安装Telnet
- 从exp入手分析漏洞
- python numpy中stack(),hstack(),vstack()函数解释
- ios首次加载web_ios加载webview显示进度条OC版
- mysql创建表时遇到的问题_MySQL语言创建表时遇到了问题,请问我错在哪里了?...
- [bbk2908]第4集 - Chapter 03 - 介绍RAC的体系结构
- 微信小程序四(设置底部导航)
- 借条已经收回,他以没收据为由让我继续还款怎样办?
- 常用中文字体的Unicode编码
- 征集对智能视觉组eIQ的使用反馈
- android操作蓝牙打印机(上)
- markdown(Latex)连乘符号
- 华为GAUSSDB集成
- 十分钟清除西门子C65手机密码
- Python里的%s和%d是什么意思
- 华为的云计算转型:逼出来的开放
- A Knight's Journey
- 广州楼市:这种房产千万不要碰,再便宜也不要买!
- r7 7735h参数 r7 7735h性能怎么样 r7 7735h相当于什么水平
- 打印100-200以内的素数
热门文章
- OPA Quality Report in Jenkins Ben - 到哪里能看到我们的OPA Test在Jenkins Server上运行的情况
- where is argument in check callback passed by framework - SAP UI5学习笔记
- upload Fiori application to ABAP server via report /UI5/UI5_REPOSITORY_LOAD
- 从SAP社区上的一篇博客开始,聊聊SAP产品命名背后的那份情怀
- SAP CRM product customizing下载的第四个队列
- Jerry Wang的CRM中间件培训 Middleware
- Embedded web server initialization - jar file default-mimetypes.properties
- SAP CRM WebClient UI Sales Area的cancel处理
- how to find data source of F4 help in web client UI
- SAP ABAP实用技巧介绍系列之使用代码获得某个structure上的扩展字段