Python 继承和子类示例:从 Person 到 Student 的演示

继承允许我们定义一个类,该类继承另一个类的所有方法和属性。父类是被继承的类,也叫做基类。子类是从另一个类继承的类,也叫做派生类。

创建一个父类

任何类都可以成为父类,因此语法与创建任何其他类相同:

示例,创建一个名为 Person 的类,具有 firstname 和 lastname 属性以及一个 printname 方法:

class Person:def __init__(self, fname, lname):self.firstname = fnameself.lastname = lnamedef printname(self):print(self.firstname, self.lastname)

使用 Person 类创建一个对象,然后执行 printname 方法:

x = Person("John", "Doe")
x.printname()

创建一个子类

要创建一个从另一个类继承功能的类,创建子类时将父类作为参数传递:

示例,创建一个名为 Student 的类,它将继承 Person 类的属性和方法:

class Student(Person):pass

注意: 当您不希望向类添加任何其他属性或方法时,请使用 pass 关键字。

现在,Student 类具有与 Person 类相同的属性和方法。

示例,使用 Student 类创建一个对象,然后执行 printname 方法:

x = Student("Mike", "Olsen")
x.printname()

添加 init() 函数

到目前为止,我们已经创建了一个从父类继承属性和方法的子类。我们希望在子类中添加 init() 函数(而不是使用 pass 关键字)。

注意: 每次使用类创建新对象时,都会自动调用 init() 函数。

示例,向 Student 类添加 init() 函数:

class Student(Person):def __init__(self, fname, lname):# 添加属性等

当您添加 init() 函数时,子类将不再继承父类的 init() 函数。

注意: 子类的 init() 函数会覆盖父类的 init() 函数的继承。

要保留父类的 init() 函数的继承,将调用父类的 init() 函数:

示例:

class Student(Person):def __init__(self, fname, lname):Person.__init__(self, fname, lname)

现在,我们已成功添加了 init() 函数,并保留了父类的继承,并准备在 init() 函数中添加功能。

使用 super() 函数

Python 还具有 super() 函数,可以使子类继承其父类的所有方法和属性:

示例:

class Student(Person):def __init__(self, fname, lname):super().__init__(fname, lname)

通过使用 super() 函数,您无需使用父元素的名称,它将自动继承其父元素的方法和属性。

添加属性

示例,向 Student 类添加一个名为 graduationyear 的属性:

class Student(Person):def __init__(self, fname, lname):super().__init__(fname, lname)self.graduationyear = 2019

在下面的示例中,2019 年应该是一个变量,并且在创建学生对象时传递给 Student 类。要实现这一点,请在 init() 函数中添加另一个参数:

示例,添加一个 year 参数,并在创建对象时传递正确的年份:

class Student(Person):def __init__(self, fname, lname, year):super().__init__(fname, lname)self.graduationyear = yearx = Student("Mike", "Olsen", 2019)

添加方法

示例,向 Student 类添加一个名为 welcome 的方法:

class Student(Person):def __init__(self, fname, lname, year):super().__init__(fname, lname)self.graduationyear = yeardef welcome(self):print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)

最后

为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding,或者扫描下方二维码,关注公众号,即可获取最新文章。

看完如果觉得有帮助,欢迎点赞、收藏关注

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/119440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机网络】从输入URL到页面都显示经历了什么??

文字总结 ① DNS 解析:当用户输入一个网址并按下回车键的时候,浏览器获得一个域名,而在实际通信过程中,我们需要的是一个 IP 地址,因此我们需要先把域名转换成相应 IP 地址。浏览器会首先从缓存中找是否存在域名&…

一文5000字从0到1使用Jmeter实现轻量级的接口自动化测试(图文并茂)

接口测试虽然作为版本的一环,但是也是有一套完整的体系,有接口的功能测试、性能测试、安全测试;同时,由于接口的特性,接口的自动化低成本高收益的,使用一些开源工具或一些轻量级的方法,在测试用…

Tauri2 mobile development traps

时间点:2023/10/24。最近在倒腾移动端开发,不想学原生和 flutter,试了试 react-native,开发体验没有想象中的舒服,干脆直接上 tauri 2 吧,半年前就听说 tauri 2 支持移动端,到现在应该可堪小用。…

idea 插件 checkstyle 规则示例和说明

idea 安装插件 idea 配置插件 checkstyle.xml 示例和说明 <?xml version"1.0"?> <!DOCTYPE module PUBLIC"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN""https://checkstyle.org/dtds/configuration_1_3.dtd"><mod…

I/O软件层次结构(用户层软件,设备独立性软件,设备驱动程序,中断处理程序,硬件)

文章目录 1.用户层软件2.设备独立性软件1.主要实现的功能2.逻辑设备表&#xff08;LUT&#xff09; 3.设备驱动程序4.中断处理程序2.中断处理程序的处理流程 4.硬件 1.用户层软件 用户层软件实现了与用户交互的接口&#xff0c;用户可直接使用该层提供的、与I/O操作相关的库函数…

【Qt】绘图与绘图设备

文章目录 绘图设备QPainter绘图实例案例1案例2-高级设置案例3&#xff1a;利用画家画资源图片 点击按钮移动图片 QtPaintDevice实例Pixmap绘图设备QImage 绘图设备QPicture 绘图设备 QPainter绘图 Qt 的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制。整个绘图系…

Apifox创建团队 项目 接口 邀请成员步骤演示

我们打开Apifox 找到 个人空间 然后 点击新建团队 然后这里 我们输入名字 点击确定 我们的团队就出来了 然后 我们点击新建项目 然后肯定是 http 项目名称输入一下 然后 语言 我们中国肯定是中文的 然后点击确定 建好之后 我们就会进入自己的项目啦 然后 我们可以新建个接…

ThinkPHP8学习笔记

ThinkPHP8官方文档地址&#xff1a;ThinkPHP官方手册 一、composer换源 1、查看 composer 配置的命令composer config -g -l 2、禁用默认源镜像命令composer config -g secure-http false 3、修改为阿里云镜像源composer config -g repo.packagist composer https://mirror…

C51--单片机中断

51单片机是单线程模式&#xff0c;需要用到硬件中断。 一、中断系统 中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。 当中央处理器CPU正在处理某件事的时候&#xff0c;外界发生了紧急事件请求&#xff0c;要求CPU暂停当前工作&#xff0c;转而去处理这个紧急…

程序员们平时都喜欢逛什么论坛呢?

网站不在多&#xff0c;好用就行&#xff1b;技术不求精&#xff0c;好摸鱼就行。是时候祭出我收藏夹里的这15个网站了&#xff01; 求职必备&#xff1a;牛客网 https://www.nowcoder.com/ 年少不知牛客好&#xff0c;等到要面试的时候才发现是神器。 你可以在牛客上搜索到一…

ArcGIS中批量mxd高版本转低版本

我们经常在给别人发ArcGIS的工程文件mxd&#xff0c;结果到别人那发现mxd工程文件打不开&#xff0c;原因是我们的arcgis版本高于别人&#xff0c;此时工程文件又很多&#xff0c;一个个转存成低版本又嫌麻烦&#xff0c;于是我们做了个批量mxd高版本转低版本的小工具&#xff…

论文解读:Large Language Models as Analogical Reasoners

一、动机 大模型在各种类型的NLP任务上均展现出惊艳的表现。基于CoT propmt能够更好地激发大模型解决复杂推理问题的能力&#xff0c;例如解决数学解题&#xff0c;可以让模型生成reasoning path。现有的经典的CoT方法有few-shot cot、zero-shot cot等。然后现有的cot面临两个…

C++内存管理:其七、标准库中的allocator

首先明确一点&#xff0c;绝大多数情况下&#xff0c;是标准库中的容器使用allocator。因为容器需要频繁的申请和释放内存。 一、容器使用allocator 典型的例子&#xff1a; vector<int , allocator<int>> a;但是为什么我们通常的定义vector变量的方法是&#x…

Hadoop3.0大数据处理学习1(Haddop介绍、部署、Hive部署)

Hadoop3.0快速入门 学习步骤&#xff1a; 三大组件的基本理论和实际操作Hadoop3的使用&#xff0c;实际开发流程结合具体问题&#xff0c;提供排查思路 开发技术栈&#xff1a; Linux基础操作、Sehll脚本基础JavaSE、Idea操作MySQL Hadoop简介 Hadoop是一个适合海量数据存…

Linux进程终止

文章目录 进程退出场景进程退出码strerrorerrno浅谈进程异常exit && _exit 进程退出场景 代码运行完毕&#xff0c;结果正确代码运行完毕&#xff0c;结果不正确代码异常 进程退出码 我们写的C/C的代码&#xff0c;main函数每次都需要返回0&#xff0c;而这个return…

C++:类的默认成员函数------拷贝构造函数赋值运算符重载

目录 一、前言 二、拷贝构造函数 &#x1f4a6;拷贝构造函数概念 &#x1f4a6;拷贝构造函数特性 &#x1f34e; 解释特性2&#xff1a;拷贝构造函数的参数只有一个且必须使用引用传参&#xff0c;使用传值方式会引发无穷递归调用 &#x1f350;解释特性3&#xff1a;…

Qt之自定义QStringListModel设置背景色和前景色

一.效果 二.实现 QStringListModel里只实现了Qt::EditRole和Qt::DisplayRole,不能直接设置背景色和前景色,所以我们要继承QStringListModel,重写其中的data和setData方法,使其支持Qt::ForegroundRole和Qt::BackgroundRole。 QHStringListModel.h #ifndef QHSTRINGLISTMO…

P1966 [NOIP2013 提高组] 火柴排队

洛谷的一道原题&#xff0c;方法有很多&#xff0c;树状数组以及排序&#xff0c;对刚学树状数组的人来说用排序会比较好理解。 本题最重要的结论就是&#xff0c;要保证两个数组中相同位置的差最小&#xff0c;但是不一定两个数组中数值相同&#xff0c;所以只需要保证相同位…

C语言每日一题(20)最大公因数等于 K 的子数组数目

力扣 2447 最大公因数等于 K 的子数组数目 题目描述 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 nums 的子数组中元素的最大公因数等于 k 的子数组数目。 子数组 是数组中一个连续的非空序列。 数组的最大公因数 是能整除数组中所有元素的最大整数。 …

王道p40 1.设计一个递归算法,删除不带头结点的单链表L中的所有值为x的结点(c语言代码实现)图解递归

视频讲解(献丑了)&#xff1a;p40 第1题 王道数据结构课后代码题c语言代码实现_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Xa4y1Q7ui/?spm_id_from333.999.0.0 首先它是一个不带头结点的单链表 我们就得特殊处理 我们先让*LNULL&#xff1b; 然后为s开辟一个新…