无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

(super python) python 中的 super详解 在 Python 中 super 函数使用简介 全网首发(图文详解1)

前沿技术 Micheal 6个月前 (06-19) 69次浏览 已收录 扫描二维码

(super python) python 中的 super详解

在Python中,super 是一个内置的函数,它返回了一个代理对象,该对象会将方法调用委托给类的基类(也叫做父类或者超类),这通常用于在继承体系中的子类里面调用父类的方法。

使用 super 的好处包括:

  • 提高了代码的可读性和可维护性,因为显示调用父类名称会使得代码结构更清晰。
  • 在多重继承中,super 会遵循方法解析顺序(Method Resolution Order, MRO) 自动找到正确的基类方法来调用,这样可以正确处理复杂的继承关系。

下面是使用 super 的一些基础用法:

单继承中使用super

在单继承中,super() 用来调用父类的方法:

class Parent:
    def __init__(self, name):
        print('Parent __init__', name)

class Child(Parent):
    def __init__(self, name):
        print('Child __init__', name)
        super().__init__(name)  # 使用 super 调用父类的 __init__ 方法

child = Child('Mike')  # 输出: Child __init__ Mike
                        #       Parent __init__ Mike

多重继承中的super

在多重继承中,super 用于正确地调用所有的父类方法:

class Base:
    def __init__(self, name):
        print('Base __init__', name)

class A(Base):
    def __init__(self, name):
        print('A __init__', name)
        super().__init__(name)

class B(Base):
    def __init__(self, name):
        print('B __init__', name)
        super().__init__(name)

class Child(A, B):
    def __init__(self, name):
        print('Child __init__', name)
        super().__init__(name)   # 正确地处理 A 和 B 的 __init__ 方法

child = Child('Mike')    # 输出: Child __init__ Mike
                         #       A __init__ Mike
                         #       B __init__ Mike
                         #       Base __init__ Mike

在这个例子中,Child 继承自 AB,当调用 child = Child('Mike') 的时候,它会按照MRO自顶向下地调用每个父类的 __init__ 方法。

用super调用父类方法是一种通用的做法,不过还要注意以下几点:

  • super() 在Python 3中可以不带任何参数,在Python 2中则需要写作 super(Child, self)
  • 在静态方法和类方法中使用super时,需要传递类对象和实例对象: super(Child, cls)super(Child, Child)

以上就是 super 的基本使用方法。在开发中,根据具体的类结构和需要重写的方法,用适当的方式调用 super() 来确保父类中相应的方法能够被正确地执行。
(finaldate) Finaldate怎么使用?Finaldate汉化版使用详细图文教程 数据恢复基本步骤:Finaldate软件使用方法 全网首发(图文详解1)
(大厅上层攻略) 我叫MT神庙大厅上层攻略 高玩单刷开荒心得分享 关于MT神庙大厅上层攻略的分享 全网首发(图文详解1)

喜欢 (0)
[]
分享 (0)
关于作者:
流水不争先,争的是滔滔不绝