python在子类中添加新的属性_pycharm实现在子类中添加一个父类没有的属性
我就废话不多说了,还是直接看代码吧!
class Car():
"""一次模拟汽车的简单尝试"""
def __init__(self, make, model, year):
"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_description_name(self):
"""返回整洁的描述性信息"""
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
def read_odometer(self):
"""打印一条指出汽车里程的消息"""
print("This car has " + str(self.odometer_reading) + " miles on it.")
def update_odometer(self, mileage):
"""
将里程读数设置为指定的值
禁止将里程表读数往回调
"""
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("You can't roll back an odometer!")
def increment_odometer(self, miles):
"""将里程表读数增加指定的量"""
self.odometer_reading += miles
class ElectricCar(Car):
"""电动汽车的独特之处"""
def _init_(self, make, model, year):
"""
电动汽车的独特之处
初始化父类的属性,再初始化电动汽车特有的属性
"""
super().__init__(make, model, year)
self.battery_size = 70
def describe_battery(self):
"""打印一条描述电瓶容量的消息"""
print("This car has a " + str(self.battery_size) + "-kwh battery.")
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_description_name())
my_tesla.describe_battery()
运行结果:
Traceback (most recent call last):
File "E:/Python编程从入门到精通配套资料/Self-taught Python/electric_car.py", line 50, in
my_tesla.describe_battery()
File "E:/Python编程从入门到精通配套资料/Self-taught Python/electric_car.py", line 46, in describe_battery
print("This car has a " + str(self.battery_size) + "-kwh battery.")
AttributeError: 'ElectricCar' object has no attribute 'battery_size'
补充知识:python中类的继承,子类的方法的添加,子类的方法的覆盖,子类的属性的添加,及继续父类的属性
python如果我们想要继承一个类的方法,并且不改当前类,我们可以新建一个子类,来继续他的方法
1、类的继承,我们先来创建一个Animal的父类,我们再来创建一个dog的子类,dog子类继承父类Animal的方法,但是里面没有执行任何代码,这时我们初始化一下dog子类为dog_1,记得也要传入身高还有体重,不然会报错我们可以发现dog_1继承了Animal里面的属性及方法。直接输出一下及调用一下。
class Animal():
def __init__(self, weight, high):
self.weight = weight
self.high = high
def shout(self):
print('wow')
class Dog(Animal):
pass
dog_1 = Dog(20,40)
print(dog_1.high)
print(dog_1.weight)
dog_1.shout()
#输出内容是
40
20
wow
2、子类的方法的添加,我们同样可以在dog这个子类里添加新的方法,比如我们添加一个run的方法,再初始化一下dog_1,你会发现dog_1也会有run这个方法。
class Dog(Animal):
def run(self):
print('running')
dog_1 = Dog(20,40)
dog_1.run()
#输出结果是
running
3、子类的方法的覆盖,我们再添加一个子类Cat,同样继承Animal,但是你发现Cat不是wow这样叫的,所以我们要重新定义一下shout函数,把父类Animal里的函数覆盖掉。这时我们初始化cat_1调用Cat子类,记得要传入体重和身高,不然会报错,然后调用shout方法,你会发现输出的内容是miao,因为子类里的函数把父类里的函数覆盖掉了。
class Cat(Animal):
def shout(self):
print('miao')
cat_1 = Cat(20, 40)
cat_1.shout()
#输出结果是
miao
4、子类的属性的添加,及继续父类的属性,如果这时我们要给Cat加一个属性color,同样用__init__来定义属性,但是我们要用super()来继承父类里的weight和high,color 属性的性,同样用self.color赋值,这样我们用cat_2初始化Cat类的时候就要传入三个参数,我们输出一个cat_2.color,可以看到是正常调用的。
class Cat(Animal):
def __init__(self, weight, high, color):
super().__init__(weight, high)
self.color = color
def shout(self):
print('miao')
cat_2 = Cat(20, 40, 'yellow')
print(cat_2.color)
#输出结果是
yellow
类的继承就讲到这里,大家有问题欢迎私聊我
以上这篇pycharm实现在子类中添加一个父类没有的属性就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持python博客。
python在子类中添加新的属性_pycharm实现在子类中添加一个父类没有的属性相关推荐
- mysql在视图中增加新数据_怎么向Mysql视图中增加新数据
本篇文章主要给大家介绍mysql数据表中视图是怎么新增数据的. mysql视图的相关知识在我们之前的文章中,都已经给大家详细介绍过了,相信大家对视图肯定有了更深一步的了解. 从前面文章的介绍中,大家应 ...
- Odoo12 添加新项目安装后无法在菜单中看到链接的解决方案
Odoo12使用的python环境已经升级到了3,之前我曾经写过Odoo10的文章,不过Odoo10用的python 2的环境.所有最近重新安装了最新的Odoo10,在win10上.然而按照官网中给出 ...
- 在新版本caffe里添加新的一层(向旧格式中加)
今天实现了在caffe框架中加入一个层,完成欧式距离的任务.之所以这样,是因为还没有实现自己想要的loss,只是试着学者,看能不能把添加层的流程顺下来.最后实现了. (一)总体框架 1)在./src/ ...
- mac如何添加新的字体格式(以word中仿宋_GB2312为例)
注意:字体中必须出现GB_2312格式的选项,才算成功
- 怎样在计算机里添加新的打印机地址,网络一体打印机怎么样添加扫描地址
1.用路由器或交换机,把打印机和电脑连接在一个子网里面.2.在电脑上安装2420D的彩色扫描驱动,随打印机赠送的光盘里有,叫colour scan.如果没有,可以上佳能的官方网站上去下载扫描驱动,再安 ...
- 预习 Delphi 2009 中的新功能 - JSON (二) : 如何在 Delphi 中使用 json
为什么80%的码农都做不了架构师?>>> 在 Delphi 中使用 json, http://www.json.org/ 已经给出了几种方案, 但 Delphi 2009 使用 ...
- Python 3.10 有什么新变化
本文介绍了 Python 3.10 相比 3.9 的新增特性. 详情请参阅 更新日志. 摘要 -- 发布重点 新的语法特性: PEP 634, 结构化模式匹配: 规范说明 PEP 635, 结构化模式 ...
- android 4.4 红外,RTK2969平台android4.4添加新红外遥控器(一)
一直以来都没有一个好的习惯,学过的东西用过之后不久就忘记了,最近决定开始把之前遇到的一些问题写到这里,一方面是自己备忘,另一方面也希望能够帮助到大家,起码给各位有一点参考的价值,吾心足矣,废话少说今天 ...
- linux虚拟机如何加网卡,linux虚拟机添加新的网卡
linux虚拟机添加新的网卡 在vmware workstation虚拟机中添加虚拟网卡,默认是找到不到该设备的,必须要手动配置相关的信息才行. 首先查看系统中默认网卡的信息 ifconfig [ro ...
最新文章
- 一个在分割、检测与定位、高分辨率通用的网络
- 【Android 内存优化】libjpeg-turbo 函数库交叉编译 ( libjpeg-turbo 函数库下载 | libjpeg-turbo 编译文档 | 环境准备 | NASM 安装 )
- pip安装deb_趟坑:使用pip安装TensorFlow
- 深度学习(十五)——SPPNet, Fast R-CNN
- javascript学习系列(7):数组中的concat方法
- 也来学学插件式开发续-利用MEF
- mac双击文件打不开——设置鼠标连按速度
- 【动态规划】01背包问题:购物袋
- python写入一个文件之前可以不打开_跟老齐学Python之不要红头文件(1)
- VSCode好用的Python插件及配置
- 2021-06-06label标签 icon 图标设置
- 2010年下半年信息系统监理师下午题的答题参考五
- C语言计算机题库第91套,二级c语言上机题库 2013年9月全国计算机等级考试二级C语言上机题库100套.doc...
- java调用后台的短信验证码_JAVA通过http调用验证码短信接口源码
- 硅谷最牛逼的50个天使投资人
- 灵魂 我·将·归·来·开·放
- SEO不能不知道的首页关键词策略
- 关键词推荐工具中的用户引导机制之三:相关搜索query技术
- 随笔-自控概率的大转盘抽奖
- 上海浦东机场的wifi使用攻略
热门文章
- MySQL—表中添加数据
- 物理攻击规避(Physical Attack Mitigation)
- 文件权限与目录配置——笔记
- Python正则表达式之编译正则表达式(2)
- hackme Guess-the-Number 寒假逆向生涯(4/100)
- 2020-12-3(详解虚拟地址如何转化为物理地址)
- 24、HTML 属性
- 1057 Stack (30 分)【难度: 中 / 知识点: 树状数组 STL】
- 【AC Saber】离散化
- 主板怎么开启csm_华擎Z490主板移植AMD SAM加速技术:游戏性能提升最多11.5%