Python_继承_构造函数
class Bird:def __init__(self): #构造函数self.hungry=Truedef eat(self):if self.hungry:print("Aaaah.....")self.hungry=Falseelse:print("No, thanks!")class SongBird(Bird):def __init__(self):self.sound="Squawk!"def sing(self):print(self.sound)sb=SongBird()
sb.sing()
运行结果为为:
Squawk!
但是当运行sb.eat()
时,会有如下报错:
'SongBird' object has no attribute 'hungry'
因为在SongBird中重写了构造函数,但新的构造函数没有包含任何初始化属性hungry的代码。
要消除这个错误,SongBird的构造函数必须调用其超类(Bird)的构造函数,以确保基本的初始化得以执行。为此,有两种方法:
1) 调用未关联的超类的构造函数
class Bird: #超类def __init__(self): #构造函数self.hungry=Truedef eat(self):if self.hungry:print("Aaaah.....")self.hungry=Falseelse:print("No, thanks!")class SongBird(Bird): #子类def __init__(self):Bird.__init__(self) #使用未关联的超类的构造函数self.sound="Squawk!"def sing(self):print(self.sound)sb=SongBird()
sb.sing()
sb.eat()
运行结果:
Squawk!
Aaaah.....
2) 使用函数Super
class Bird:def __init__(self):self.hungry=Truedef eat(self):if self.hungry:print("Aaaah.....")self.hungry=Falseelse:print("No, thanks!")class SongBird(Bird):def __init__(self):super().__init__() ###使用super函数,相当于调用了超类的构造函数。self.sound="Squawk!"def sing(self):print(self.sound)sb=SongBird()
sb.sing()
sb.eat()
运行结果:
Squawk!
Aaaah.....
Python_继承_构造函数相关推荐
- Python_机器学习_算法_第1章_K-近邻算法
Python_机器学习_算法_第1章_K-近邻算法 文章目录 Python_机器学习_算法_第1章_K-近邻算法 K-近邻算法 学习目标 1.1 K-近邻算法简介 学习目标 1 什么是K-近邻算法 1 ...
- W6_面向对象_封装_继承_多继承_多态
W6_面向对象_封装_继承_多继承_多态 80.81.82.83.第02章节-Python3.5-面向对象介绍 84.第05章节-Python3.5-实例变量与类变量 85.第06章节-Python3 ...
- C++继承中构造函数、析构函数调用顺序及虚析构函数
首先说说构造函数,大家都知道构造函数里就可以调用成员变量,而继承中子类是把基类的成员变成自己的成员,那么也就是说子类在构造函数里就可以调用基类的成员了,这就说明创建子类的时候必须先调用基类的构造函数, ...
- 多继承的构造函数和析构函数
//程序2:多继承的构造函数 与 析构函数 #include<iostream> using namespace std;class A { public: A() { cout<& ...
- Java继承时构造函数的关系
Java继承时构造函数的关系,先来一道笔试题给大家看看: 在继承中,关于构造方法的说明,下列说法错误的是() A.子类无条件的继承父类的无参构造方法, B.子类可以引用父类中的有参构造方法,使用sup ...
- C++ Primer 5th笔记(chap 15 OOP)继承的构造函数容器
1. 继承的构造函数 1.1 C++11新标准中,派生类可以重用其直接基类定义的构造函数. 继承方式是提供一条注明了直接基类名的using声明语句. class Bulk_quote : public ...
- python 读grid 数据_科学网—Python_机器学习_总结14:Grid search - 李军的博文
机器学习中存在两类参数:通过训练数据学习得到的参数:---可认为是辨识得到的参数,例如模型系数: 在学习算法中单独需要优化的参数--超参.调优参数:---算法自身的系数,例如决策树的深度参数: Gri ...
- python sklearn 梯度下降法_科学网—Python_机器学习_总结4:随机梯度下降算法 - 李军的博文...
=============================================================== 总结如下: 1.随机梯度下降算法可以看成是梯度下降算法的近似,但通常它能 ...
- Python_机器学习_常用科学计算库_第6章_ Seaborn+综合案例
Python_机器学习_常用科学计算库_第6章_ Seaborn+综合案例 文章目录 Python_机器学习_常用科学计算库_第6章_ Seaborn+综合案例 Seaborn 学习目标 6.1 Se ...
- 从零开始学C++之继承(二):继承与构造函数、派生类到基类的转换
一.不能自动继承的成员函数 构造函数(包括拷贝构造函数) 析构函数 =运算符 二.继承与构造函数 基类的构造函数不被继承,派生类中需要声明自己的构造函数. 声明构造函数时,只需要对本类中新增成员进行初 ...
最新文章
- Blockchain实现详细手册
- 第一节 并发基础概念及实现、进程、线程基本概念
- python windows和linux路径_python复制文件,路径不存在问题(Windows和linux路径分隔符不统一)...
- Python 获取md5值(hashlib)
- (转)C# 根据当前时间获取,本周,本月,本季度等时间段 .Net中Exception
- python async socket_Python开发中常用的标准库,这些都是你应该掌握的
- 修改telnet提示并非_热血传奇:老玩家揭秘!这4个地方都被盛大修改过,第3个80%都想不到...
- 【数据库】sql连表查询
- (个人)AR电子书系统创新实训第三周(1)
- freecodecamp小练习——Falsy Bouncer过滤数组假值
- 湖北省仙桃市谷歌高清卫星地图下载
- android权限的最佳运用
- word中将上下2个表格连成1个表格
- NOIP2016——蚯蚓
- 05: 思科防火墙基础 、 思科ASA防火墙应用
- 关于用eclipse无法出现相关内容提示的问题
- 第一届天池 PolarDB 数据库性能大赛
- 设备档案管理软件中的检修预警设计思路
- 团购GPT-4 Plus!把价格打下来!
- DDR电路的PCB布线规则
热门文章
- 截取年月日在hana中怎么写_SAP HANA跟我学HANA系列之日期函数总结
- java用一条语句判断一个整数是不是2的整数次方
- python中正则表达式的用法_详解Python中的正则表达式的用法
- “凸优化基础”相关理论知识
- (day 51 - 字符转化为数字 ) 剑指 Offer 67. 把字符串转换成整数
- ssm提交post_SSM中get和post乱码笔记
- 指定版本_小米五一购机福利,购买Redmi7指定版本,送小米活塞耳机
- Zepto:基础学习
- 计算机科学家图灵,伟大的计算机科学家图灵
- Maven打包SpringBoot项目时分离依赖JAR,配置文件时POM文件的参考配置