Python 继承,重写,super()调用父类方法操作示例

Python继承是指子类继承父类的属性和方法,可以在不影响父类功能的情况下,对子类进行扩展。Python中使用关键字class定义类,使用extends关键字来继承父类。下面演示一个简单的继承示例:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def show_info(self):
        print(f"Name: {self.name}\nAge: {self.age}")

class Student(Person):
    def __init__(self, name, age, grade):
        super().__init__(name, age)
        self.grade = grade

    def show_info(self):
        super().show_info()
        print(f"Grade: {self.grade}")

student1 = Student("Tom", 18, "Grade 1")
student1.show_info()

在上述代码中,Person是父类,Student是子类。子类Student继承了父类Person的属性和方法。

重写是指在子类中重写父类方法,可以修改父类方法的实现,实现自己的功能。如果在子类中发现的方法名与父类方法名一样,那么子类中的方法将覆盖父类中的方法。下面演示一个简单的重写示例:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def show_info(self):
        print(f"Name: {self.name}\nAge: {self.age}")

class Student(Person):
    def __init__(self, name, age, grade):
        super().__init__(name, age)
        self.grade = grade

    def show_info(self):
        print(f"Student's grade is {self.grade}")

student1 = Student("Tom", 18, "Grade 1")
student1.show_info()

在上述代码中,我们重写了父类Personshow_info()方法,子类Student中的show_info()方法将会覆盖父类的show_info()方法,并且输出的内容也不同。

super()调用父类方法是指在子类中调用父类的方法,可以继承父类的功能,并增加自己的功能。使用super()方法可以直接调用父类的方法,而不需要指定父类的名称。下面演示一个简单的super()调用父类方法示例:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def show_info(self):
        print(f"Name: {self.name}\nAge: {self.age}")

class Student(Person):
    def __init__(self, name, age, grade):
        super().__init__(name, age)
        self.grade = grade

    def show_info(self):
        super().show_info()
        print(f"Grade: {self.grade}")

student1 = Student("Tom", 18, "Grade 1")
student1.show_info()

在上述代码中,我们使用了super()方法来调用Person类中的show_info()方法,从而可以得到父类中的信息,同时输出子类独有的信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 继承,重写,super()调用父类方法操作示例 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 详解C++中函数模板的定义与使用

    下面我将详细讲解C++中函数模板的定义与使用,包括以下内容: 函数模板的定义 函数模板的使用 函数模板的特化 两条示例说明 1. 函数模板的定义 函数模板是指泛化了类型的函数实现,它使用了一组类型参数,并且可以根据这组类型参数生成多个相似的函数。函数模板的定义格式如下所示: template <typename T1, typename T2, ……

    other 2023年6月27日
    00
  • iOS 项目中的version和build 详解

    iOS 项目中的 version 和 build 详解 在 iOS 项目中,version 和 build 是两个重要的概念,用于标识和管理应用程序的不同版本。它们在应用程序的发布、更新和识别方面起着关键作用。下面将详细解释这两个概念以及它们的区别。 Version(版本号) Version 是一个用于标识应用程序版本的字符串。它通常采用 x.y.z 的格式…

    other 2023年8月3日
    00
  • i5 9400F和i5 8400哪个值得买 Intel酷睿i5-9400F和8400区别对比

    i5 9400F和i5 8400的区别对比 1. 性能比较 i5 9400F 核心/线程数:6核心/6线程 基础频率:2.9 GHz 最大睿频:4.1 GHz 缓存:9 MB TDP:65W i5 8400 核心/线程数:6核心/6线程 基础频率:2.8 GHz 最大睿频:4.0 GHz 缓存:9 MB TDP:65W 从性能上来看,i5 9400F和i5 …

    other 2023年8月6日
    00
  • C语言静态链表和动态链表

    C语言中实现链表有两种方式,静态链表和动态链表。下面我们对这两种链表进行详细介绍。 静态链表 静态链表是指使用数组来模拟链表。因为在定义时,数组大小必须确定,所以静态链表的长度是固定的。静态链表需要手动维护指针,即每个元素除了存储自己的值外,还需要记录下一个元素的下标。静态链表使用起来比较繁琐,但是相对于动态链表,它更加节省空间,不需要频繁地进行内存动态分配…

    other 2023年6月27日
    00
  • c-‘scatterlist’在linux中如何工作?

    c-‘scatterlist’在Linux中如何工作? scatterlist是Linux内核中的一个数据结构,用于描述分散/聚集I/O(scatter/gather I/O)操作中的数据缓冲区。本攻略将介绍scatterlist的基本概念和使用。 scatterlist的基本概念 分散/聚集I/O操作中,数据通常存储在多个不续的缓冲区中例如,当从磁盘读取文…

    other 2023年5月9日
    00
  • Windows Server 2008 R2 服务器常用命令小结

    Windows Server 2008 R2 服务器常用命令小结 作为一名 Windows Server 系统管理员,熟练掌握一些常用的命令可以帮助我们更快速、高效地管理服务器。在本文中,我们将介绍几条常用的命令。 1. ipconfig命令 使用 ipconfig 命令可以查看本机的网络配置情况,其中包括 IP 地址、子网掩码、默认网关等信息。输入以下命令…

    other 2023年6月26日
    00
  • Nginx和PHP-FPM的启动、重启、停止脚本分享

    下面是关于Nginx和PHP-FPM的启动、重启、停止脚本的完整攻略。 1. Nginx启动、重启、停止脚本 1.1. Nginx启动脚本 在Linux系统中,启动Nginx可以通过以下命令来执行: sudo systemctl start nginx 如果你想在系统启动的时候自动启动Nginx,可以使用以下命令: sudo systemctl enable…

    other 2023年6月27日
    00
  • 编程用到的windows系统目录变量简写

    编程中使用的Windows系统目录变量简写是一种方便的方式,可以引用常用的系统目录路径,而无需硬编码这些路径。下面是一些常见的Windows系统目录变量简写及其对应的完整路径: %USERPROFILE%:用户个人文件夹的路径。例如,C:\\Users\\username。 %APPDATA%:当前用户的应用程序数据文件夹的路径。例如,C:\\Users\\…

    other 2023年8月9日
    00
合作推广
合作推广
分享本页
返回顶部