Python 中的经典类新式类

打印 上一主题 下一主题

主题 895|帖子 895|积分 2685

要知道经典类和新式类的区别,首先要掌握类的继承
类的继承的一个优点就是减少代码冗余
广度优先和深度优先,这主要是在多类继承的时候会使用到
经典类和新式类的主要区别就是类的继承的方式
经典类遵循深度优先的规则,新式类遵循广度优先的规则。
至于什么是深度优先什么是广度优先,可以看如下示例:
  1. class A:
  2.     def save(self):
  3.         print("a")
  4. class B(A):
  5.     def save(self):
  6.         print("b")
  7. class C(A):
  8.     def save(self):
  9.         print("c")
  10. class D(B, C):
  11.     def __init__(self):
  12.         pass
  13. d = D()
  14. d.save()
  15. >> b
复制代码
在新式类中,D是继承B和C的,按照顺序,首先去找B
如果在B里面能找到实例化对象,便继承B,不再往别的地方寻找,
如果没有,就会接着找C,而不是找B的父亲A!
但是在经典类中,如果B中找不到,它会优先考虑B的父亲A,而不是C。
在 python3 中,都是遵循广度优先的规则
在python2.7以前,应该是遵循深度优先的的规则。两种规则没有优劣之分。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

半亩花草

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表