首页 > 编程语言 > 详细

python学习笔记-day10-【 类的扩展: 重写父类,新式类与经典的区别】

时间:2018-05-26 22:58:13      阅读:243      评论:0      收藏:0      [点我收藏+]

上周已经记录过类的许多定义概念,今天接着继承来说说,如何重写父类,以及在Python2与python3中中经典类与新式类的区别。

 

一、重写父类

1、重写,继承父类方法,方法定义完全一样,只是子类实现换成了子类所特有的特性。

class Zll():
    def smile(self):
        print(哈哈哈哈)


class Xz(Zll,Dcg):
    def smile(self):#重写父类的方法
        print(呵呵呵)

 

2、重写父类方法,但是还想保持父类本身的实身,子类本身也有自己的实现

class Zll():
    def smile(self):
        print(哈哈哈哈)

    def smile2(self):
        print(哈哈哈哈)

class Dcg():
    def smile2(self):
        print(啊啊啊啊)

class Xz(Zll,Dcg):
    def smile(self):#重写父类的方法
        print(呵呵呵)

    def smile2(self): #重写父类的方法
        # Zll().smile2() #调用了父类
        super(Xz, self).smile2()  #这个自动帮你找到父类的
        #如果是单继承的时候,Zll().smile2()与super(Xz, self).smile2()一样
        #如果是多继承的时候,super(Xz, self).smile2()会先找到谁就会用谁了,不会再进行多次调用父类
        print(呵呵呵)

#1、父类的方法一点用的没有,我重新写
#2、父类有这个方法,但是呢,它的功能不够完善,
#   给这个方法在原有的基础上,加上


# x = Xz()
# x.smile2()

 

二、经典类与新式类的区别

1、python3中两者的区别

#经典类与新式类的区别

class My:
    pass
class My2(object):
    pass
#在python3是没有任何区别的

2、python2中两者的区别

class My:
    pass
class My2(object):
    pass


#在python2里是有区别的
#在python2里面,一个是深度优先,一个是广度优先


#python2里
#经典类是深度优先

#新式类
#新式类是广度优先

#在pyton2经典类里面不能调用super
#在python3里面都是广度优先
 

 技术分享图片 技术分享图片

python学习笔记-day10-【 类的扩展: 重写父类,新式类与经典的区别】

原文:https://www.cnblogs.com/shmily2018/p/9094577.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!