Python 子类调用父类方法

2018-06-18 01:04:33来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

Python在继承时,如果子类重写了init()函数,则父类的init()不会被调用,这时如果子类只是想要对父类的init()函数进行简单的扩展的话,是很不方便的。那么有没有比较方便的方法来从子类调用父类呢?

        第一种是直接使用父类的类名来直接调用。(Python3.3)

class Parent:  
    def __init__(self):  
        print('This is parent init.')  
    def sleep(self):  
        print("Parent sleeps.")  
  
class Child(Parent):  
    def __init__(self):  
        Parent.__init__(self)  
        print('This is child init.')  
    def sleep(self):  
        print("Child sleeps.")  
  
c=Child()  

第二种是使用形如super(type, obj).methodName(args)调用,第一个参数表示从哪个类开始找其父类(不包括其自身),第二个参数表示类实例(一般使用self),参数args在父类方法的参数只有self时不写。

class Parent:  
    def __init__(self):  
        print('This is parent init.')  
    def sleep(self):  
        print("Parent sleeps.")  
  
class Child(Parent):  
    def __init__(self):  
        #Parent.__init__(self)  
        super(Child,self).__init__()  
        print('This is child init.')  
    def sleep(self):  
        print("Child sleeps.")  
  
c=Child()  

当在类内部使用时,super(type, obj).methodName(args)中的type, obj可以省略不写。

 

        另外,在类外面也可以使用这一函数,比如当子类覆盖了父类的某一方法后,想要通过子类的对象调用父类的这一方法:

class Parent:  
    def __init__(self):  
        print('This is parent init.')  
    def sleep(self):  
        print("Parent sleeps.")  
  
class Child(Parent):  
    def __init__(self):  
        #Parent.__init__(self)  
        super().__init__()  
        print('This is child init.')  
    def sleep(self):  
        print("Child sleeps.")  
  
c=Child()  
c.sleep()  
super(Child,c).sleep()  

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Django简介--Django从入门到精通系列教程

下一篇:每日一记----初学python