📜  “super”关键字的用法 (1)

📅  最后修改于: 2023-12-03 15:06:09.205000             🧑  作者: Mango

"super"关键字的用法

在Python中,"super"关键字可以用来引用父类中的属性和方法。它可以让我们在子类中使用父类中已定义的方法,而不需要重写这些方法。

用法

在Python中,可以使用如下语句调用父类中的方法:

super().method_name(args)

其中,"method_name"是需要调用的方法名,"args"是需要传递给该方法的参数。

如果需要在子类中重写父类的方法,并且同时需要调用父类的方法,就可以使用"super"关键字来调用父类方法:

class Parent(object):
    def method(self, arg):
        print("Parent method:", arg)
        
class Child(Parent):
    def method(self, arg):
        super().method(arg)
        print("Child method:", arg)

在上面的例子中,"Child"类继承自"Parent"类,并且重写了"method"方法。在"Child"类中,我们可以使用"super"关键字调用父类中已经定义的"method"方法,在其基础上添加新的功能。

"super"关键字的两个参数

"super"关键字还可以接受两个参数。这两个参数分别是子类和实例。通过这两个参数,可以使"super"关键字调用不同的父类方法。

例如:

class A:
    def __init__(self):
        print('A.__init__')
        
class B(A):
    def __init__(self):
        super(B, self).__init__()
        print('B.__init__')
        
class C(A):
    def __init__(self):
        super(C, self).__init__()
        print('C.__init__')
        
class D(B, C):
    def __init__(self):
        super(D, self).__init__()
        print('D.__init__')

在上面的例子中,"D"类继承自"B"和"C"两个类,这两个类都继承自"A"类。如果我们需要调用"A"类的构造方法,就可以使用"super"关键字和两个参数:

super(B, self).__init__()

这个语句表示在"B"类中,调用"C"类的构造方法。而"C"类的构造方法中又调用了"A"类的构造方法。

总结

"super"关键字是一个非常有用的关键字,可以让我们在子类中调用父类中已经定义的方法,从而避免重复编写代码。同时,"super"关键字还可以接受两个参数,可以使其调用不同的父类方法。