美文网首页
Python 重写与重载

Python 重写与重载

作者: 崔某 | 来源:发表于2021-11-21 23:58 被阅读0次

1、前言

学过Java的朋友都知道,Java有重写与重载的概念,那么Python语言有没有这种概念呢?首先来了解一下重写和重载的概念,然后验证一下。

2、重写(overwrite)

概念:方法重写又称方法覆盖,即子类不想原封不动地继承父类的方法,而是想做一定的修改,这就需要采用方法的重写。
条件:
1、参数列表必须完全和被重写方法的参数列表一致(python无此限制,见示例代码)
2、返回类型必须完全和被重写方法的返回类型一致(python无此限制,见示例代码)
3、访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protect>private,python通过下划线控制访问权限)
Python 示例代码

class A(object):

    def fun(self, v):
        print(f"class_A:{v}")
        return "aa"


class B(A):
    # 重写A类的fun方法
    def fun(self, **v):
        print(f"class_B:{v}")
        return 1


if __name__ == '__main__':
    b = B()
    print(b.fun(a="HELLO"))
    # 打印结果:
    # class_B:{'a': 'HELLO'}
    # 1

3、重载(overload)

概念:仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,函数重载主要是为了解决两个问题:可变参数类型、可变参数个数
条件:
1、一个类里面
2、方法名字相同
3、参数不同
情况 1 :
函数功能相同,但是参数类型不同,python 如何处理?答案是根本不需要处理,因为 python 可以接受任何类型的参数,如果函数的功能相同,那么不同的参数类型在 python 中很可能是相同的代码,没有必要做成两个不同函数。
情况 2
函数功能相同,但参数个数不同,python 如何处理?大家知道,答案就是缺省参数。对那些缺少的参数设定为缺省参数即可解决问题。因为你假设函数功能相同,那么那些缺少的参数终归是需要用的。
结论:鉴于情况 1 跟 情况 2 都有了解决方案,python 自然就不需要函数重载了。

相关文章

  • Python 重写与重载

    1、前言 学过Java的朋友都知道,Java有重写与重载的概念,那么Python语言有没有这种概念呢?首先来了解一...

  • JAVA基础之重写和重载

    重写和重载详细区分: Java 重写(Override)与重载(Overload) | 菜鸟教程 核心区分:重写(...

  • java面试题

    重载和重写 引用深入理解Java中的重写和重载 重写的条件 参数列表必须完全与被重写方法的相同;返回类型必须完全与...

  • Java重写和重载

    本文参考菜鸟驿站Java 重写(Override)与重载(Overload) 重写(Override) 重写指子类...

  • java方法重写与重载

    java方法重写与重载 重写:子类重写父类方法,形参、返回值不变,即外壳不变,核心重写 z重载:方法名相同,参数不同

  • Java 重写(Override)与重载(Overload)

    Java 重写(Override)与重载(Overload) 重写(Override) 重写是子类对父类的允许访问...

  • 重载与重写

    重写方法的规则: 1、参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。 2、返回的类型必须一直与被...

  • 重写与重载

    重载: 1、同一个类中,方法名相同,参数部分不同(参数类型或者参数个数不同),返回类型可同可不同。 旨在类可以用同...

  • 重载与重写

    重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称...

  • 重载与重写

    一、概念 重载(Overload):一个类中多态性的一种表现,发生在同一个类中,方法名相同,参数类型、个数、顺序不...

网友评论

      本文标题:Python 重写与重载

      本文链接:https://www.haomeiwen.com/subject/jqjvtrtx.html