qt 子类调用父类的函数_子类调用父类方法
当有相同的属性或者方法是this子类表示调用自己的属性或者方法,
super调用父类的属性或者方法。
当子类调用的属性方法在子类中不存在时,那么this和super都是调用父类的属性或者方法
1.方式一
子类调用父类的方法,包含2中形式的调用。一种形式是在类内部通过继承的方式调用父类的方法,另外一种形式是子类实例化后之后通过继承的方式来调用父类的方法。如下图所示:
注意一点,在子类内部通过继承的方式调用父类的属性时,必须要带上self位置参数(self只在实例化过程中和在实例调用属性时才能省略(self本来的含义就是指向实例自己));而实例在通过继承调用父类的属性或方法时,则不用传self参数,因为实例已经实例化了呀!!!
该部分的代码块如下:注意一点,在子类内部通过继承的方式调用父类的属性时,必须要带上self位置参数(self只在实例化过程中和在实例调用属性时才能省略(self本来的含义就是指向实例自己));而实例在通过继承调用父类的属性或方法时,则不用传self参数,因为实例已经实例化了呀!!!
该部分的代码块如下:
class Person():
"人的类"
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def eat(self):
print("%s开始吃饭了"%self.name)
class Student(Person):
"学生类"
def __init__(self,name,age,sex,classnaem):
#子类调用父类的构造函数进行初始化
Person.__init__(self,name,age,sex) #通过子类把参数传给父类(self不能少,self只有在实例化和实例调用类时才能省略,此处不是)
self.classnaem = classnaem
def course(self):
print("%s在%s上课"%(self.name,self.classnaem))
def done(self):
print("这个学生在干嘛?")
#子类调用父类方法
Person.eat(self) #子类在调用父类方法必须要传self
#实例化一个子类
student = Student("周明",23,'男',"11届土木3班")
#调用子类本身的方法
student.course()
#通过子类调用父类的方法--->实例化之后来调用父类的方法
student.eat()
#调用子类的方法,在子类方法中调用了子类的方法,与student.eat有区别
student.done()
此时如果父类的名称更改了,那么在子类中所有用到父类名的地方均要进行修改了。所有此种方法不便于后期维护,为此我们选择方式二。
2.方式二
使用super来代替父类名,以方便代码的后期维护,见下图:
使用super的好处,一是可以代替父类名,这样后期父类名更改了,我们只需要更改子类名称后面的父类名即可,子类中其他的父类名可以不用更改;二是使用了super后,调用父类方法时可以不传参数self。
该部分的代码块为:
class Person():
"人的类"
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def eat(self):
print("%s开始吃饭了"%self.name)
class Student(Person):
"学生类"
def __init__(self,name,age,sex,classnaem):
#子类调用父类的构造函数进行初始化
# Person.__init__(self,name,age,sex) #通过子类把参数传给父类(self不能少,self只有在实例化和实例调用类时才能省略,此处不是)
#使用super来替换父类名
super().__init__(name,age,sex) #通过子类把参数传给父类,用super可以省略self
self.classnaem = classnaem
def course(self):
print("%s在%s上课"%(self.name,self.classnaem))
def done(self):
print("这个学生在干嘛?")
#子类调用父类方法
super().eat() #子类在调用父类方法,使用super可以省略self
#实例化一个子类
student = Student("周明",23,'男',"11届土木3班")
#调用子类本身的方法
student.course()
#通过子类调用父类的方法--->实例化之后来调用父类的方法
student.eat()
#调用子类的方法,在子类方法中调用了子类的方法,与student.eat有区别
student.done()
参考:https://www.cnblogs.com/a8457013/p/8438490.html
qt 子类调用父类的函数_子类调用父类方法相关推荐
- qt 子类调用父类的函数_子类中调用父类的方法
父类名 . __init__(self, ...) 可以将父类中的init中的属性重复调用,减少代码的重复 class Vehicle: def __init__(self, name, speed, ...
- html调用父页面的函数,js调用父框架函数与弹窗调用父页面函数的方法
调用父级中的 aaa的函数 子页面中: οnclick="window.parent.frames.aaa()" 父页面中: function aaa() { alert('bbb ...
- const对象只能调用const成员函数、不能调用非const成员函数;非const对象可以调用const成员函数
引发原因: 由调用成员函数时隐式传入的当前对象的this指针引起. 1. 非const成员函数中的隐式参数:classA* this 2. const成员函数中的隐式参数:const classA* ...
- java子类可以修改父类成员吗_子类重写父类成员方法
最近在学习到Java的继承和多态时遇到了这样的一个问题:关于继承链中子类对父类的私有方法是否可以覆盖的问题,在此记录一下自己对这个问题解决以后的一些心得. 首先要明确:子类是不能够覆盖(重写)父类的私 ...
- go 调用其他文件函数_一篇文章让你了解Go语言中方法Methods的使用内幕
概述 Go语言中的方法只不过是一个带有接收器的函数.接收器是某个特定类型(如struct)的实例,或是任何其他自定义类型的实例.所以基本上,当你把函数附加到类型上时,该函数就成为这个类型的一个方法.方 ...
- python调用c语言函数_从Python调用C函数
python调用c语言函数 We can call a C function from Python program using the ctypes module. 我们可以使用ctypes模块从P ...
- php子类没有构造函数父类有构造函数_如何向父类构造函数传递参数,如果父类中存在构造函数并且需要参数,子类在造对象的时候也应该传入相应的参数( )...
[单选题]六个基本视图的投影规律是"主俯仰后:长对正;( ):高平齐; 俯左仰右:宽相等." [单选题]儿童文学无论是什么文体,都强调什么? [单选题]正在治疗的学生肺结核病患者可 ...
- go 调用其他文件函数_【C# 调用 Go 语言】0x1 Hello Golang
C# 和 Golang 都不是世界上最好的语言.在不同的业务场景下,C# 和 Golang 各有所长.如果要编写一个网络程序,显然 Golang 更擅长,而如果要编写一个桌面 GUI 程序,那么 C# ...
- go 调用其他文件函数_一文读懂Go中软件包概念
Go编程语言的软件包管理和部署的完整概述 如果您熟悉Java或NodeJS之类的语言,那么您可能非常熟悉软件包. 包不过是带有一些代码文件的目录,该目录从单个引用点公开了不同的变量(功能). 让我解释 ...
最新文章
- HashMap深度解析(二)
- wxWidgets:wxAUI 概述
- 机房系统(四)——【分页控件SSTab】
- 96. 不同的二叉搜索树
- qq浏览器网页翻译_有了这些PDF翻译软件,再也不愁看英文文献了
- java 不加锁_在java中,在高并发的时候,不加锁的时候。
- 2020未来科学大奖获奖名单公布 张亭栋、王振义等获奖
- 通过一个IT管理服务提供商攻陷190个澳大利亚组织机构的邮件供应链
- java.util.concurrent.ExecutorCompletionService 源码
- JSK-23223 数字反转【进制】
- 数据预处理—3.变量选择之逐步挑选—向前挑选、向后挑选、双向挑选python实现
- Linux:计算机网络基础
- 【matlab】 GMSK的调制与解调【附详尽注释】
- word如何去掉标题前面的黑点
- FileInputStream.read()返回int类型原因
- 《BPF( 伯克利数据包过滤器 ) Performance Tools》 第二章 技术背景
- 论文写作——origin画图
- java不能覆盖父类的_java中子类覆盖父类方法所必须满足的条件
- nagios mysql 并发_nagios监控mysql的connections和processlist
- 单片机看门狗c语言,单片机看门狗程序 -解决方案-华强电子网
热门文章
- amd r7 2700u linux,性能对比:AMD R7 2700U略胜一筹_笔记本新闻-中关村在线
- 高老师的架构设计_隽语集(BB_0751)
- linux搭建java部署环境-docker
- 设置网易邮箱大师为 Win10 默认邮件客户端
- sketchup边线设置_SketchUp中隐藏后边线的操作教程
- 时空召唤的服务器维护,《时空召唤》3.14版本停服维护内容曝光 新皮肤热血篮球艾尔登场...
- Authentication和Authrization(上)
- Linux下查看某端口是否开放
- gitee 显示隐藏文件.git
- 判断魔方阵c语言程序设计_C语言实现魔方阵代码及解析