码迷,mamicode.com
首页 > 编程语言 > 详细

python基础学习日志day6-类的经典类vs新式类

时间:2017-05-30 17:54:49      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:isa   查询   bug   init   int   ssi   python   his   深度   

经典类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新式类

标签:isa   查询   bug   init   int   ssi   python   his   深度   

原文地址:http://www.cnblogs.com/lixiang1013/p/6920498.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!