手写 Python 虚拟机
海纳
华为资深编译专家,原 Huawei JDK 团队负责人
1248 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 25 讲/共 28 讲
导学|直播加餐:三小时掌握C++ (3讲)
手写 Python 虚拟机
15
15
1.0x
00:00/00:00
登录|注册

21|继承和多态:完善面向对象编程的两大特征

你好,我是海纳。
封装、继承和多态是面向对象编程的三大特征。从第 18 课开始,我们专注于构建类的定义和对象初始化能力,也就是说,只是完成了封装这一特征,这一节课,我们就会进一步实现方法重载和复写,以及类的继承特征。
第 20 课中我们介绍了操作符的重载,Python 除了可以对操作符进行重载之外,还可以对各种特殊方法进行重载。接下来,我们实现方法的重载。

内建方法重载

Python 里有很多内建方法,比如 len 方法、pow 方法等。len 方法可以支持字符串、列表、字典等类型。如果想让 len 方法也支持自建类型,就必须为自定义类型添加 __len__ 方法的实现,例如:
class Vector(object):
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, v):
return Vector(self.x + v.x, self.y + v.y)
def __len__(self):
return self.x * self.x + self.y * self.y
print(len(Vector(3, 4)))
print(len("hello"))
为任意对象增加 len 方法,步骤和增加 add 方法是一样的。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

1. Python 中可以通过重载内建方法来实现自定义类型的特定功能,比如重载 len 方法来支持自定义类型的长度计算。 2. 重载特殊操作符,如函数调用操作符 (),可以让对象像函数一样被调用,通过在类中定义 `__call__` 方法来实现。 3. 重载操作符可以包括一元、二元操作符以及特殊操作符,如函数调用、取下标等操作。 4. 重载操作符的实现可以提高自定义类型的灵活性和可扩展性,使其更符合特定的业务需求。 5. 重载操作符的实现可以让开发者更方便地使用自定义类型,提高代码的可读性和可维护性。 6. C3 算法是用于解决多继承中的菱形继承和检查继承顺序不一致的问题的算法。 7. C3 算法通过合并父类的 MRO 序列来确定子类的 MRO 序列,从而解决多继承中的继承顺序问题。 8. 实现 C3 算法需要在类中定义 super 属性和 _mro 属性,以及相应的方法来计算和合并父类的 MRO 序列。 9. 类的多继承对于方法的查找是有影响的,需要在 getattr 方法中进行相应的处理来保证正确的方法查找顺序。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手写 Python 虚拟机》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)