📜  Python超级()

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

Python超级()

重要的 OOP 特性之一是Python中的继承。当一个类从另一个类继承部分或全部行为时称为继承。在这种情况下,继承的类是子类,后一个类是父类。
在继承的子类中,可以使用 super()函数来引用父类。 super函数返回超类的一个临时对象,该对象允许对其子类的所有方法进行访问。

注意:有关更多信息,请参阅Python中的继承

此外,使用超级函数的好处是:-

  • 无需记住或指定父类名称即可访问其方法。此函数可用于单继承和多继承。
  • 这实现了模块化(隔离更改)和代码可重用性,因为无需重写整个函数。
  • Python中的超级函数是动态调用的,因为Python是一种不同于其他语言的动态语言。

使用超级函数有 3 个限制条件:-

  • 超函数引用的类及其方法
  • 超级函数和被调用函数的参数应该匹配。
  • 使用该方法后,该方法的每次出现都必须包含 super() 。

单继承中的超级函数

示例:让我们以动物为例。狗、猫和牛是动物的一部分。它们还具有共同的特征,例如-

  • 它们是哺乳动物。
  • 它们有一条尾巴和四条腿。
  • 它们是家畜。

因此,狗、猫和马类是动物类的子类。这是一个单继承的例子,因为许多子类都是从一个父类继承而来的。

Python3
# Python program to demonstrate
# super function
 
 
class Animals:
     
    # Initializing constructor
    def __init__(self):
        self.legs = 4
        self.domestic = True
        self.tail = True
        self.mammals = True
     
    def isMammal(self):
        if self.mammals:
            print("It is a mammal.")
     
    def isDomestic(self):
        if self.domestic:
            print("It is a domestic animal.")
     
class Dogs(Animals):
    def __init__(self):
        super().__init__()
 
    def isMammal(self):
        super().isMammal()
 
class Horses(Animals):
    def __init__(self):
        super().__init__()
 
    def hasTailandLegs(self):
        if self.tail and self.legs == 4:
            print("Has legs and tail")
 
# Driver code
Tom = Dogs()
Tom.isMammal()
Bruno = Horses()
Bruno.hasTailandLegs()


Python3
class Mammal():
     
    def __init__(self, name):
        print(name, "Is a mammal")
         
class canFly(Mammal):
     
    def __init__(self, canFly_name):
        print(canFly_name, "cannot fly")
         
        # Calling Parent class
        # Constructor
        super().__init__(canFly_name)
             
class canSwim(Mammal):
     
    def __init__(self, canSwim_name):
         
        print(canSwim_name, "cannot swim")
             
        super().__init__(canSwim_name)
         
class Animal(canFly, canSwim):
     
    def __init__(self, name):
         
        # Calling the constructor
        # of both the parent
        # class in the order of
        # their inheritance
        super().__init__(name)
 
 
# Driver Code
Carol = Animal("Dog")


输出:

It is a mammal.
Has legs and tail

多重继承中的超级函数

示例:让我们再举一个例子。假设类 canfly 和 canswim 继承自哺乳动物类,并且这些类由动物类继承。所以动物类继承自多个基类。让我们看看在这种情况下 super 的用法。

Python3

class Mammal():
     
    def __init__(self, name):
        print(name, "Is a mammal")
         
class canFly(Mammal):
     
    def __init__(self, canFly_name):
        print(canFly_name, "cannot fly")
         
        # Calling Parent class
        # Constructor
        super().__init__(canFly_name)
             
class canSwim(Mammal):
     
    def __init__(self, canSwim_name):
         
        print(canSwim_name, "cannot swim")
             
        super().__init__(canSwim_name)
         
class Animal(canFly, canSwim):
     
    def __init__(self, name):
         
        # Calling the constructor
        # of both the parent
        # class in the order of
        # their inheritance
        super().__init__(name)
 
 
# Driver Code
Carol = Animal("Dog")

输出:

Dog cannot fly
Dog cannot swim
Dog Is a mammal

Animal 类继承自两个父类——canFly 和 canSwim。因此,子类实例 Carol 可以访问两个父类构造函数。