【246】Python -继承(父类、子类、super)

2023-05-16


  

e8b903f81c120701e3a70293edaf4a8e.gif

题目部分(原文见公众号:python宝)

python宝

https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzU5NjIyOTE4OQ==&scene=123#wechat_redirect

小麦苗DB宝

https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&__biz=MzIzOTA2NjEzNQ==&scene=1&album_id=1407409723808366593&count=3#wechat_redirect

小麦苗个人博客:https://www.xmmup.com/

        Python 类的封装、继承、多态 3 大特性。继承机制经常用于创建和现有类功能类似的新类,又或是新类只需要在现有类基础上添加一些成员(属性和方法),但又不想直接将现有类代码复制给新类。也就是说,通过使用继承这种机制,可以轻松实现类的重复使用,减少代码冗余、提高重用性。

        参考:https://www.w3school.com.cn/python/python_inheritance.asp

答案部分

 一、创建父类

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

实例

创建一个名为 Person 的类,其中包含 firstname 和 lastname 属性以及 printname 方法:

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname


  def printname(self):
    print(self.firstname, self.lastname)
# 使用 Person 来创建对象,然后执行 printname 方法:


x = Person("fname1", "lname1")
print(x.printname())  # fname1 lname1

 二、创建子类

要创建从其他类继承功能的类,请在创建子类时将父类作为参数发送:

实例

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

class Student(Person):  # 现在,Student 类拥有与 Person 类相同的属性和方法。
  pass


x = Student("fname2", "lname2")  # 使用 Student 类创建一个对象,然后执行 printname 方法:
print(x.printname())  # fname2 lname2

三、添加 __init__() 函数

到目前为止,我们已经创建了一个子类,它继承了父类的属性和方法。

我们想要把 __init__() 函数添加到子类(而不是 pass 关键字)。

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

实例

为 Student 类添加 __init__() 函数:

class Student(Person):
  def __init__(self, fname, lname):  # 添加属性等
      '''
      当您添加 __init__() 函数时,子类将不再继承父的 __init__() 函数。
      注释:子的 __init__() 函数会覆盖对父的 __init__() 函数的继承。
      如需保持父的 __init__() 函数的继承,请添加对父的 __init__() 函数的调用:
      '''
      # 在,我们已经成功添加了 __init__() 函数,并保留了父类的继承,我们准备好在 __init__() 函数中添加功能了。
      Person.__init__(self, fname, lname)
s = Student("fname3", "lname3")
print(s.printname())  # fname3 lname3

 四、super() 函数使用

super() 函数,它会使子类从其父继承所有方法和属性,通过使用 super() 函数,您不必使用父元素的名称,它将自动从其父元素继承方法和属性。

提示:如果您在子类中添加一个与父类中的函数同名的方法,则将覆盖父方法的继承。

class Child(Person):
    def __init__(self, fname, lname, year):
        super().__init__(fname, lname)
        self.today = year


    def welcome(self):
        print("Welcome", self.firstname, self.lastname, "to the class of", self.today)


c = Child("fname4", "lname4", 2022)
print(c.welcome())  # Welcome fname4 lname4 to the class of 2022

 五、Python的多继承

参考:https://www.jianshu.com/p/addd4a118e62

class Parent1:
    def func1(self):
        print("this is function 1")




class Parent2:
    def func2(self):
        print("this is function 2")




class Child(Parent1, Parent2):
    def func3(self):
        print("this is function 3")




ob = Child()
print(ob.func1())  # this is function 1
print(ob.func2())  # this is function 2
print(ob.func3())  # this is function 3

5e50d64aaa1e6e03be68cd6a99a03613.jpeg

About Me:小麦粒

● 本文作者:小麦粒,专注于python、数据分析、数据挖掘、机器学习相关技术,也注重技术的运用

● 作者博客地址:https://blog.csdn.net/u010986753

● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

● 个人微信号:pythonbao 联系我加微信群

● 个人QQ:87605025

● QQ交流群py_data :483766429

● 公众号:python宝 或 DB宝

● 提供OCP、OCM和高可用最实用的技能培训

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

017b5a6136a81fe07cd96e5c9bdd5a59.gif

如果你觉得到文章对您有帮助,点击下方我的头像,赞赏我哦!

有您的支持,小麦粒一定会越来越好!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【246】Python -继承(父类、子类、super) 的相关文章

随机推荐

  • Python学习笔记-PyQt6状态栏

    QMainWindow有自带的状态栏 xff0c 可以通过statusBar 方法获取自身的状态栏 xff0c 或者通过实例化QStatusBar类 xff0c 然后使用QMainWindow setStatusBar 方法将状态栏添加到主
  • 未完成的IT路停在回车键---2014年末总结篇

    时间都去哪儿了 xff1f 一晃而过 xff0c 越来越能体会到这个词的真实感 特别是过了二十岁 xff0c 这种感觉越来越深刻 xff0c 越来越强烈 xff0c 犹如小编做公交车的时候一直向后排排倒的香樟树 xff0c 还记得有首歌叫时
  • 这一次,VR离我们真的很近

    从高考作文开始 今年号称是VR元年 xff0c 虽然目前VR还没能像手机一样走进千家万户 xff0c 但关于VR设备的关讨论是层出不穷 而今年高考 xff0c 浙江省的作文题就与VR相关 网上购物 视频聊天等在我们生活中越来越普及 有人预言
  • 补.从零开始学习C语言--scanf的%c前为什么加空格

    include lt stdio h gt int main void int i char ch scanf 34 d 34 amp i scanf 34 c 34 amp ch 这行的 C前有个空格 printf 34 i 61 d n
  • svn status 返回值详解

    转http blog linuxphp org archives 652 svn 是在提交前查看本地文本和版本库里面的文件的区别 返回值有许多种具体含义如下 xff1a url 61 L abc c svn已经在 svn目录锁定了abc c
  • ubuntu杀毒软件clamAV运维笔记

    1 安装 xff1a apt get install clamav 2 守护进程安装 xff1a apt get install clamav daemon 3 更新病毒库 xff1a freshclam 或手动下载安装 cvd文件 备注
  • shell 教程一:变量,字符串,传参

    一 xff0c hello shell strong span class pln style color rgb 72 72 76 vi hello span span class pun style color rgb 147 161
  • 树莓派Ubuntu20.04创建虚拟内存文件并设置开机自动启用

    目录 一 检查有没有虚拟内存 二 创建虚拟内存文件并设置权限 三 设置并激活虚拟内存文件 四 设置开机自动启用虚拟内存 五 重启后检测虚拟内存是否正常启用 一 检查有没有虚拟内存 树莓派Ubuntu20 04默认没有虚拟内存 xff0c 可
  • 随着稻香河流继续奔跑 ——致2016

    写在前面 xff0c 2016于我而言 xff0c 是丰收的一年 这一年 xff0c 我收获了能力与本领 xff0c 收获了美丽与自信 xff0c 收获了欣赏和肯定 2017 xff0c 我会不忘来时路 xff0c 继续前行 2016的驿站
  • 浅谈strtok函数的使用心得

    经常使用strtok函数进行文本操作 xff0c 其实他是一个很好用的函数 xff0c 很方便 xff0c 能够简单的实现一行文本的切分操作 xff0c 总结一下使用心得 函数原型char strtok char s const char
  • 局域网内Windows使用RealVNC远程连接CentOS6.5桌面

    1 进入root终端 xff0c 检查是否安装VNC server xff1a rpm q tigervnctigervnc server 2 如果未安装VNC server xff0c 则 xff1a yum install ytiger
  • CentOS7安装tigerVNC

    一 首先系统是已经安装了图形界面 并默认是启动到图形界面 xff0c 如果你的系统没安装图形界面 xff0c 就请给系统安装图形界面 xff1a yum y span class token function groups span spa
  • openstack主要版本亮点

    openstack主要版本亮点 1 Stein 在Stein新增的几十项功能特性中 xff0c 主要亮点有三 xff1a 容器功能的强化 用于支持5G 边缘计算和网络功能虚拟化 xff08 NFV xff09 用例的网络升级功能 资源管理和
  • OpenStack 学习之 OVN : L2网络 ( Logical switches 逻辑交换机)

    OVN Manual install amp Configuration Open vSwitch 官网 参考 OVN学习 xff08 一 xff09 OVN实战一之GNS3操作指南及OVN入门 简单理解和知识 按照 OVN Manual
  • linux vncserver设置及配置自动启动

    VNC 服务端 vncserver 启动VNC vncserver kill num num一般从1开始 因为0被x server占用了 vncpasswd 设置vnc连接密码 要使用VNC图形界面修改 vnc xstartup配置文件中末
  • 【125】Linux 中 ps -ef|grep和ps、grep详解

    一 ps ef grep详解 xff08 原文见公众号python宝 xff09 ps命令将某个进程显示出来 PS是LINUX下最常用的也是非常强大的进程查看命令 grep命令是查找 xff0c 是一种强大的文本搜索工具 xff0c 它能使
  • Pycharm Debug调试(纯干货)

    内容目录 xff08 原文见公众号python宝或www xmmup com xff09 一 打断点二 代码调试三 界面小图标介绍四 控制台介绍 数字转换为大写人民币 import sys import io sys stdout 61 i
  • 【217】#!/usr/bin/env 的意义

    题目部分 xff08 原文见公众号 xff1a python宝 xff09 python宝 https mp weixin qq com mp profile ext action 61 home amp biz 61 MzU5NjIyOT
  • 使用Scrum进行敏捷项目管理

    Scrum是一种敏捷方法 xff0c 旨在指导团队进行产品的迭代和增量交付 通常被称为 敏捷项目管理框架 xff0c 其重点是使用经验过程 xff0c 使团队能够快速 xff0c 有效 xff0c 有效地做出改变 传统的项目管理方法确定了需
  • 【246】Python -继承(父类、子类、super)

    题目部分 xff08 原文见公众号 xff1a python宝 xff09 python宝 xff1a https mp weixin qq com mp profile ext action 61 home amp biz 61 MzU5