目录
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.代码补⻬