📜  Python|具有多级继承的 super()函数

📅  最后修改于: 2022-05-13 01:54:49.988000             🧑  作者: Mango

Python|具有多级继承的 super()函数

Python中的 super()函数:
Python超函数为我们提供了显式引用父类的便利。在我们必须调用超类函数的情况下,它基本上很有用。它返回允许我们通过'super'引用父类的代理对象。

要理解Python超级函数,我们必须了解继承。在Python继承中,子类继承自超类。

Python Super函数为我们提供了进行单级或多级继承的灵活性,使我们的工作更轻松、更舒适。请记住一件事,当从子类中引用超类时,不需要显式地写出超类的名称。

以下是如何在 Python3 中调用超级函数的一个示例:

# parent class also sometime called the super class
class Parentclass():
    def __init__(self):
        pass
  
# derived or subclass
# initialize the parent or base class within the subclass
class subclass(Parentclass):
    def __init__(self):
        # calling super() function to make process easier
        super()


具有多级继承的Python super()函数。

正如我们所研究的那样, Python super()函数允许我们隐式引用超类。但是在多级继承中,问题出现了,有这么多类,那么super()函数将引用哪个类?
嗯, super()函数有一个属性,它总是引用直接的超类。另外, super()函数不仅引用了__init__() ,它还可以在需要时调用超类的其他函数。

这是解释多重继承的示例。

# Program to define the use of super()
# function in multiple inheritance
class GFG1:
    def __init__(self):
        print('HEY !!!!!! GfG I am initialised(Class GEG1)')
  
    def sub_GFG(self, b):
        print('Printing from class GFG1:', b)
  
# class GFG2 inherits the GFG1
class GFG2(GFG1):
    def __init__(self):
        print('HEY !!!!!! GfG I am initialised(Class GEG2)')
        super().__init__()
  
    def sub_GFG(self, b):
        print('Printing from class GFG2:', b)
        super().sub_GFG(b + 1)
  
# class GFG3 inherits the GFG1 ang GFG2 both
class GFG3(GFG2):
    def __init__(self):
        print('HEY !!!!!! GfG I am initialised(Class GEG3)')
        super().__init__()
  
    def sub_GFG(self, b):
        print('Printing from class GFG3:', b)
        super().sub_GFG(b + 1)
  
  
# main function
if __name__ == '__main__':
  
    # created the object gfg
    gfg = GFG3()
  
    # calling the function sub_GFG3() from class GHG3
    # which inherits both GFG1 and GFG2 classes
    gfg.sub_GFG(10)
输出:
HEY !!!!!! GfG I am initialised(Class GEG3)
HEY !!!!!! GfG I am initialised(Class GEG2)
HEY !!!!!! GfG I am initialised(Class GEG1)
Printing from class GFG3: 10
Printing from class GFG@: 11
Printing from class GFG1: 12