一、方法的重写
继承后,子类可以拥有除父类继承的内容以外的其他内容
1. 关于方法
a. 在子类中可以直接添加其他方法
b. 重写:
①. 完全重写: 重新实现从父类继承下来的方法, 重写后, 子类再调用这个方法, 就调用子类的方法
②. 部分重写: 保留父类的功能, 再添加新的功能, 可以通过super().方法名
调用父类方法已保留父类功能
对象和类调用方法的过程: 先看当前类是否存在这个方法, 没有才看父类有没有这个方法,以此类推, 直到基类(object)为止
2. 对象属性的继承
通过init()方法来继承父类的属性,如果需要给当前类添加对象属性: 重写init方法, 如果要保留父类的对象属性, 需要使用super()去调用父类的init方法。
补充:
多态: 同一种事物的不同表现形式, 继承产生多态。
重载: 一个类中可以有多个名字相同的方法但参数不同,就叫重载。在python中不支持重载。
3. 运算符重载
3.1. 运算符重载 (重新定义运算符运算过程)
>、<
大于和小于只需重载一个, 另一个的结果是可以去其反。
通过运算符的重载可实现对象间的加减,大小比较
class One:
def __init__(self, name='', age=0, height=0):
self.name = name
self.age = age
self.height = height
# 重载: >
def __gt__(self, other):
return self.height > other.height
# 重载: <
def __lt__(self, other):
return self.age < other.age
# 重载: +
def __add__(self, other):
return self.age + other.age
# 重载: -
def __sub__(self, other):
return self.height - other.height
二、python 内存管理
- 内存中有两个特殊的区域: 栈、堆
- 栈: 栈中的内存是系统自动管理的(内存的开辟和内存的释放) --- 作用域结束, 内存就释放
- 堆: 堆中的内存都是需要写程序去开辟和释放的(python中这个过程也已经自动化)
原理:
堆中的数据到底是什么时候释放的?
- 看一个值有几个引用, 当一个值没有引用的时候, 值对应的内存空间就会被释放(引用计数机制)
- 引用: 储存对象地址的变量
删除引用对象就会被销毁;将对象添加到容器中, 对象的引用会加1
五、包的使用
通过格式import 包
、from 包 import 内容1, 内容2
来使用包
封装: | |
---|---|
对一个功能的封装 | 用函数 |
对多个功能的封装 | 模块和类 |
对多个数据进行封装 | 字典, 类 |
对多个类进行封装 | 模块 |
对多个模块进行封装 | 包 |
网友评论