主要是参考菜鸟教程中的相关代码,代码连接[在这里](https://www.runoob.com/w3cnote/python-extends-init.html)
输出结果为:
name: runoob Son runoobSon类(子类)继承了父类Father,而Son没有重写__init__函数,由于继承了父类,故在实例化时会自动的调用父类的__init__方法,虽然Son并没有指定参数变量。上述代码执行顺序为:son=Son(‘runoob’),先初始化调用父类的__init__函数,故输出self.name,然后执行print ( son.getName() ),输出’Son '+self.name。
输出结果为:
hi Son runoob这里子类Son继承了父类Father,与上面代码不同之处在于,这里的Son重写了__init__方法,因此在实例化Son时( son=Son(‘runoob’)),不会调用父类的__init__方法,故父类中 print ( “name: %s” %( self.name) )不会执行,而只会执行 Son类中的__init__函数,故输出:hi,然后执行getName函数,输出 'Son '+self.name
代码如下:
class Father(object): def __init__(self, name): self.name=name print ( "name: %s" %( self.name)) def getName(self): return 'Father ' + self.name class Son(Father): def __init__(self, name): super(Son, self).__init__(name) print ("hi") self.name = name def getName(self): return 'Son '+self.name if __name__=='__main__': son=Son('runoob') print ( son.getName() )输出结果为:
name: runoob hi Son runoob子类Son继承了父类Father,并且重写了__init__方法,故Son可以继承父类的__init__方法,因此在实例化时(son=Son(‘runoob’)),先访问父类__init__方法,然后继续执行自己的__init__方法(注意这里super是在 print (“hi”)语句之前的,因此是先执行super,再执行print (“hi”)语句,按顺序执行,如过改成supen在print (“hi”)下面那么输出结果就会是:
hi name: runoob Son runoob