super 理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了super 理解相关的知识,希望对你有一定的参考价值。


  • super 解决了类继承时候,不同类的同名称方法继承问题
  • 当执行下面代码的时候,代码会报错’Girl’ object has no attribute ‘height’,
  • 两个类(Girl 和Person)有相同的方法名称,init 和about,当名称相同时候子类的方法会覆盖’父类’(这个父类的叫法有问题姑且这么叫)
  • 在子类Girl中,__init__方法已经覆盖父类的方法,
  • 当执行 E.about(‘Elisabeth’) ,这个about 是子类的about ,这个方法会用到height,但是这个功能在父类中的__init__的方法里面,不好意思被覆盖掉了,所以报错了
class Person:
def __init__(self):
self.height=180
def about(self,name):
print(from Person about++++ , is about .format(\\n,name,self.height))

class Girl(Person):
def __init__(self):


self.age=16

def about(self,name):
print(from Girl about +++++ , is a hot girl ,she is about ,and her age is .format(\\n,name,
self.height,self.age))



if __name__==__main__:
E=Girl()
E.about(Elisabeth)

在子类Girl里面加上 super(Girl,self).init(),那么父类的__init__方法下移,子类的__init__方法继承了父类的功能

class Person:
def __init__(self):
self.height=180
def about(self,name):
print (from Person about++++ , is about .format(\\n,name,self.height))

class Girl(Person):
def __init__(self):

super(Girl,self).__init__()
self.age=16

def about(self,name):
print(from Girl about +++++ , is a hot girl ,she is about ,and her age is .format(\\n,name,
self.height,self.age))



if __name__==__main__:
E=Girl()
E.about(Elisabeth)

可以看出现在这个方法还是Girl 里面的,因为子类的同名方法覆盖父类的方法

from Girl about +++++
, Elisabeth is a hot girl ,she is about 180,and her age is 16

加载父类中的about方法

class Person:
def __init__(self):
self.height=180
def about(self,name):
print(from Person about++++ , is about .format(\\n,name,self.height))

class Girl(Person):
def __init__(self):

super(Girl,self).__init__()
self.age=16

def about(self,name):

super(Girl,self).about(name)
print (from Girl about +++++ , is a hot girl ,she is about ,and her age is .format(\\n,name,
self.height,self.age))



if __name__==__main__:
E=Girl()
E.about(Elisabeth)
from Person about++++
, Elisabeth is about 180
from Girl about +++++
, Elisabeth is a hot girl ,she is about 180,and her age is 16


以上是关于super 理解的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript深入理解

深入理解 JavaScript

super的理解

深入理解JavaScript系列:立即调用的函数表达式

如何理解react中的super(),super(props)

Java重载覆写thissuper抽象类接口