python - self 调用父类方法

Python 子类继承父类构造函数说明 | 菜鸟教程如果在子类中需要父类的构造方法就需要显式地调用父类的构造方法,或者不重写父类的构造方法。 子类不重写 __init__,实例化子类时,会自动调用父类定义的 __init__。 实例 [mycode3 type='python'] class Father(object): def __init__(self, name): self.name=name print (..icon-default.png?t=O83Ahttps://www.runoob.com/w3cnote/python-extends-init.html

在学习了上述教程后,学到了子类调用父类的方法方式

使用 super 关键字:super(子类,self).__init__(参数1,参数2,....)
使用经典写法:父类名称.__init__(self,参数1,参数2,...)

但学习的时候,脑海里有一个奇怪的想法,self 不是也可以调用父类的方法吗 ?

先说一下自己的结论:

父类有A方法,子类重写A方法,不能通过self.A()方法调用父类A方法,需要通过教程中的方式

self

self 分析一下情况:

  1. 子类___init__() 调用 self.___init__() 
  2. 子类a() 调用 self.a() 
  3. 子类a() 调用 self.b()
情况 1: 子类___init__() 调用 self.___init__() 
class student(people):grade = ''def __init__(self, n, a, w, g):# 调用父类的构函self.__init__(self, n, a, w)self.grade = g

看了这个代码,不用运行就知道 self.___init__() 调不到父类的构造函数 ,所以不可行

情况 2:子类a() 调用 self.a() 

不用看代码 ,同情况 1

情况 3:子类a() 调用 self.b()
class Parent:def __init__(self, lastname):self.lastname = lastnamedef b(self):print('Parent b')class Son(Parent):def __init__(self, lastname):super().__init__(lastname)def a(self):self.b()Son("liu").a()

运行后没有问题

super()

super() 分析一下情况:

  1. 子类___init__() 调用 super().___init__() 
  2. 子类a() 调用 super().a() 
  3. 子类a() 调用 super().b()

情况 1: 子类___init__() 调用 super().___init__() 

这种情况就是菜鸟教程中的,没有问题

情况 2:子类a() 调用 self.a() 
class Parent:def a(self):print('Parent a')class Son(Parent):def a(self):print('son a')super().a()Son().a()

运行结果:

son a
Parent a

情况 3: 子类a() 调用 super().b()
 
class Parent:def b(self):print('Parent b')class Son(Parent):def a(self):print('son a')super().b()Son().a()

运行结果:

son a
Parent b

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

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

相关文章

Linux基础---13三剑客及正则表达式

一.划水阶段 首先我们先来一个三剑客与正则表达式混合使用的简单示例,大致了解是个啥玩意儿。下面我来演示一下如何查询登录失败的ip地址及次数。 1.首先,进入到 /var/log目录下 cd /var/log效果如下 2.最后,输入如下指令即可查看&#xf…

基于协同过滤+python+django+vue的音乐推荐系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于协同过滤pythondjangovue…

Linux使用常见问题指南

普通用户sudo权限问题 我在普通用户Sun下,编写了一个.cc文件,然后用sudo权限安装gcc/g去运行该文件,却提示我如下: 原因 当前的用户没有加入到sudo的配置文件里 #切换到root用户 su #编辑配置文件 vim /etc/sudoers #增加配置, 在打开的配置文件中,找到root ALL(A…

【iOS】ViewController的生命周期

相关函数 init: 初始化ViewController。viewDidLoad:在我之前学习中最多使用的方法,在创建类后无论视图展示还是消失,该方法只调用一次在布局中,类成员对象和变量的初始化都会放在这个方法中。viewWilAppear:如同英语含义一样,在…

Java设计模式—面向对象设计原则(五) ----->迪米特法则(DP) (完整详解,附有代码+案例)

文章目录 3.5 迪米特法则(DP)3.5.1 概述3.5.2 案例 3.5 迪米特法则(DP) 迪米特法则:Demeter Principle,简称DP 3.5.1 概述 只和你的直接朋友交谈,不跟“陌生人”说话(Talk only to your immediate friends and not to stranger…

Springboot与minio

一、介绍 Minio是一个简单易用的云存储服务,它让你可以轻松地把文件上传到互联网上,这样无论你在哪里,只要有网络,就能访问或分享这些文件。如果你想要从这个仓库里取出一张图片或一段视频,让网站的访客能看到或者下载…

面向对象程序设计——set容器の简析

1.set的介绍 • 序列式容器和关联式容器 • 我们已经接触过STL中的部分容器如:string、vector、list、deque、array、forward_list等,这些容器统称为序列式容器,因为逻辑结构为线性序列的数据结构,两个位置存储的值之间⼀般没有紧…

Qt --- 常用控件的介绍 --- 其他控件

一、QPushButton QWidget中设计到的各种属性/函数/使用方法,针对接下来要介绍的Qt的各种控件都是有效的。 使用QPushButton表示一个按钮,这也是当前我们最熟悉的一个控件了。这个类继承了QAbstractButton,这个类是一个抽象类,是…

Unity 设计模式 之 创建型模式 -【单例模式】【原型模式】 【建造者模式】

Unity 设计模式 之 创建型模式 -【单例模式】【原型模式】 【建造者模式】 目录 Unity 设计模式 之 创建型模式 -【单例模式】【原型模式】 【建造者模式】 一、简单介绍 二、单例模式 (Singleton Pattern) 1、什么时候使用单例模式 2、单例模式的好处 3、使用单例模式的…

【后端开发】JavaEE初阶—Theard类及常见方法—线程的操作(超详解)

前言: 🌟🌟本期讲解多线程的知识哟~~~,希望能帮到屏幕前的你。 🌈上期博客在这里:【后端开发】JavaEE初阶—线程的理解和编程实现-CSDN博客 🌈感兴趣的小伙伴看一看小编主页:GGBondl…

WIFI路由器的套杆天线简谈

❝本次推文简单介绍下WIFI路由器的套杆天线。 路由器天线 路由器在这个万物互联的时代,想必大家对其都不陌生。随着科技的发展,常用的路由器上的天线也越来越多,那么问题来了:天线越多,信号越好吗?路由器…

ChromaDB教程_2024最新版(上)

前言 在上一篇(快捷入口)文章中,博主提到了一个向量存储,其中用到了Chroma数据库。代码示例如下: vectordb Chroma.from_documents(documentsdocs,embeddingembedding,persist_directoryvector_dir )这是基于langc…

服务发现和代理实例的自动更新

☞ 返回总目录 1.服务发现的两种方式 StartFindService 方法 这是一个在后台启动的连续 “FindService” 活动,当服务实例的可用性发生变化时,会通过回调通知调用者。 它返回一个FindServiceHandle,可通过调用StopFindService来停止正在进行…

自动化立体仓库与堆垛机单元的技术参数

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 完整版文件和更多学习资料,请球友到知识星球【智能仓储物流技术研习社】自行下载。 这份文件是一份自动化立体仓库与堆垛机单…

初识APC机制实现APC注入

参考:APC异步过程调用-CSDN博客 又是跟着红队蓝军师傅学免杀的一天,这节课介绍了APC机制和APC注入的实现。 APC介绍: APC,全称为Asynchronous Procedure Call,即异步过程调用,是指函数在特定线程中被异…

【HTTPS】对称加密和非对称加密

HTTPS 是什么 HTTPS 是在 HTTP 的基础上,引入了一个加密层(SSL)。HTTP 是明文传输的(不安全) 当下所见到的大部分网站都是 HTTPS 的,这都是拜“运营商劫持”所赐 运营商劫持 下载⼀个“天天动听“&…

Java ETL - Apache Beam 简介

基本介绍 Apache Beam是一个用于大数据处理的开源统一编程模型。它允许用户编写一次代码,然后在多个批处理和流处理引擎上运行,如Apache Flink、Apache Spark和Google Cloud Dataflow等。Apache Beam提供了一种简单且高效的方式来实现数据处理管道&…

【Node.js】初识微服务

概述 Node.js 的微服务架构是一种通过将应用程序分解为独立的、松耦合的小服务的方式进行系统设计。 每个微服务负责处理一个特定的业务功能,并且这些服务可以独立开发、部署、扩展和管理,并且可以通讯。 它的核心思想就是解耦。 微服务和微前端是类…

智慧校园建设解决方案建设系统简介

一、建设背景 1.1 政策背景 1.2 班牌的演变 1.3 建设愿景 二、 智慧班牌简介 三、智慧班牌系统 3.1 系统概述 3.2 软件平台功能交互简介 3.2.1 智慧班牌与管理平台间的功能关联 3.2.2 手机客户端(管理员、教师、家长端) 3.2.3 手机客户端&#x…

CleanClip --- 为Mac用户打造的智能剪贴板管理利器

CleanClip是一款专为Mac用户设计的强大剪贴板管理工具,旨在提升用户的工作效率和数据管理体验。它通过智能化的剪贴板内容管理,实现了Mac系统与用户操作之间的无缝衔接。CleanClip支持多种连接方式,包括系统级的快捷操作和自定义快捷键&#…