Python:python3中__bases__的使用(MRO)
2020-02-17 04:57
399 查看
注:尚未在pyhon2中测试
参考文档:https://fishc.com.cn/forum.php?mod=viewthread&tid=48888&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403
· 错误示例
——————————————————————————————————
class A(): def __init__(self): self.a=10 def get_a(self): print("我是a") class B(): def __init__(self): self.b=10 def get_b(self): print("我是b") B.__bases__ += (A,)
· 正确用法
class A(): def __init__(self): self.a=10 def get_a(self): print("我是a") class Before_B(): pass class B(Before_B): def __init__(self): self.b=10 def get_b(self): print("我是b") print(B.__bases__) B.__bases__ += (A,)
在这里插入代码片由此可见,使用__bases__时,不继承__init__里的属性,只继承方法;为B类添加A类方法的前提是B是一个继承类,即B.__bases__为(<class ‘main.B的父类’>,)
· 查看继承的类,MRO
使用 print(类名._mro_) 可查看继承的顺序。
参考文档《一窥Python中MRO排序原理》,可以看出是深度优先的原则。
参考文档《多重继承的陷阱:钻石继承(菱形继承)问题》则写着广度优先。
?????
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 用python的循环写九九乘法表
- python高级爬虫笔记(1)
- python高级爬虫笔记(2)
- python高级爬虫笔记(4)
- python高级爬虫笔记(3)
- win10下使用python3.7安装python-pcl库
- python sys.argv[]的用法
- 基于opencv-python的环形编码标志点识别(有源码可用)
- windows下搭建pycharm+python+pcl环境
- python-docx批处理文档,table中的文本等格式会改变?
- Python中中文输出显示以及列表初始化坑坑
- 千里之行始于足下,看完本文现在开始学Python也来得及
- Python批量处理图片名
- python第一次学习笔记(可能会有更新)
- 使用Python进行数据挖掘的编程问题杂锦
- Python进行数据挖掘常用matplotlib代码片段技巧(持续更新ing..)
- 将python程序打包为exe及一些问题
- 解决安装tensorflow-gpu失败:Command "python setup.py egg_info"failed with error code 10 in........
- python_opencv例程遇到empty() in function 'cv::CascadeClassifier::detectMultiScale'解决办法
- 科学计算和可视化(numpy及matplotlib学习笔记)