重写父类的方法及经典类和新式类的区别

1.父类重写的实例展示 (继承才有父类)

# coding=utf-8

class Zll():

         # def smile(self):

         #      print('哈哈哈')

         #      return 'aa'

         pass

class Dcg():

         def smile(self):

                   print('啊啊啊啊啊')

class Lw():

         def smile(self):

                   print('嘿嘿嘿')

class Xz(Zll,Dcg,Lw):   #继承多个父类依次找父类是否有该方法,有就调用。

         def smile(self):   #重写父类的方法

                   # Dcg().smile()  #调用了父类   通过Dcg().实例化再调用。指定了父类

                   # super(Xz,self).smile()  #这个自动帮你找到父类的   super 后面写自己 和上述方法一样效果(貌似高逼格),修改父类的构造方法

                   print('呵呵呵')

x = Xz()  #实例化

x.smile()  #调用

对于父类使用的两种需求:

#1、父类的方法一点用的没有,我重新写的 比如重写smile方法。

#2、 父类有这个方法,但是呢,它的功能不够完善,给这个方法在原有的基础上,再

#给他添加一些新功能,比如子类中直接调用父类的方法。

2. 经典类和新式类的区别:

      1) #pthon2里面,多继承的时候

        #经典类是深度优先,

        # 新式类是广度优先

        #python3里面都是广度优先

        2)python2 经典类里面不能用super

            python3里面经典类和新式类没有任何的区别。

例子

class My:

         pass

class My2(object):   #新式类

         pass

#python3里面没有任何的区别

深度和广度优先(python2中)

class A(object):      #这样就广度优先

    def x(self):

        print('A')

class B(A):

    # def x(self):

    #     print('B')       

    pass

class C(A):

    def x(self):

        print('C')

class D(B,C):

    pass

s = D()     ###  结果找B  没有就找A  最后C(深度优先,经典类)

s.x()      ###

猜你喜欢

转载自www.cnblogs.com/cslw5566/p/9102792.html