首页 > 代码库 > python基础学习日志day6-类的经典类vs新式类
python基础学习日志day6-类的经典类vs新式类
经典类VS新式类区别
1)写法
新式类
class Person(object):#new style
经典类
class Persion: #classical style
2)调用父类
新式写法用super
经典类直接写父类类名
3)多继承时继承顺序python3使用的是广度查询,所以两个都一样。
经典类python2是深度查询。所以经典类python2多继承是有BUG class D(B,C) D--》B--》A--C
# -*- coding:utf-8 -*- __author__ = ‘shisanjun‘ class A: def __init__(self): self.n = ‘A‘ class B(A): # def __init__(self): # self.n = ‘B‘ pass class C(A): def __init__(self): self.n = ‘C‘ class D(B,C): # def __init__(self): # self.n = ‘D‘ pass obj = D() print(obj.n)
注:新式类py2和py3结果:都是调用 obj.n先类D中找self.n如果没有,在B中找self.n,如果没有在C中找self.n,如果还是没有在A中找self.n(广度优先)
经典类py3:都是调用 obj.n先类D中找self.n如果没有,在B中找self.n,如果没有在C中找self.n,如果还是没有在A中找self.n(广度优先)
经典类py2: obj.n先类D中找self.n如果没有,在B中找self.n,如果没有在A中找self.n,如果还是没有在C中找self.n (深度优先),这是有BUG的。
python基础学习日志day6-类的经典类vs新式类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。