python 类 super,Python类继承及super方法的使用实例

本文介绍了Python类继承的基本概念,特别关注了新式类的自动初始化和`super`的使用。通过实例演示了如何在类B中继承A类,以及新式类与经典类的区别,如默认继承基类、多重继承顺序和新特性如property。
摘要由CSDN通过智能技术生成

首先来一个Python类继承的例子:

class A:

def __init__(self):

print “enter A”

print “leave A”

class B(A):

def __init__(self):

print “enter B”

A.__init__(self)

print “leave B”if __name__ == ‘__main__’:

t = B()输出:

enter B

enter A

leave A

leave B

如果B类在继承A类之后不重写A类的init方法,那么在B类中是不需要显式调用A类的init方法的,B类会自动初始化A类的init方法。

Python的类分为经典类和新式类。

经典类:python2.2之前的类,它到python2.7还能兼容,到3.0之后就只承认新式类了。经典类是默认没有派生自某个基类的

新式类:python2.2之后的类,它的特征就是如果一个类没有特意指明派生至那个类,那么默认继承object基类。

经典类和新式类的区别:

1、默认继承的基类不同,上面有讲。

2、涉及到多重继承的时候顺序不一样,经典类采用从左到右深度优先的匹配原则,而新式类采用C3算法进行顺序计算,具体的C3算法是怎样的,可以通过__MRO__和instance.mro()来打印出来体验下。这也是由于经典类在多重继承上存在问题,为了解决这个问题,所以引进了C3算法。

3、新式类加入property和super等用法,极大提高了python编程效率。

Super使用

看例子:

class Parentclass(object):

def __init__(self):

self.parent = ‘I\’m the parent.’

print ‘Parent’def bar(self,message):

print message,’from Parent’class Childclass(Parentclass):

def __init__(self):

super(Childclass,self).__init__()

print ‘Child’

def bar(self,message):

super(Childclass, self).bar(message)

print ‘Child bar fuction’

print self.parent

if __name__ == ‘__main__’:

Child = Childclass()

Child.bar(‘HelloWorld’)

可以从例子里看到,这是一个python的新式类的继承,继承自object,在子类中,通过super方法显式调用父类中的方法,super(Childclass,self)其实就相当于一个父类的实例。super机制里可以保证公共父类仅被执行一次,至于执行的顺序,是按照mro进行的(E.__mro__)。

需要注意的一点,就是使用super,需要保持一致性,也就是一个地方使用了super,那么在其他地方涉及到子类中调用父类方法的时候,都要使用super来调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值