pycharm实现在子类中添加一个父类没有的属性


Posted in Python onMarch 12, 2020

我就废话不多说了,还是直接看代码吧!

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 <module>
  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 示例分享---逻辑推理编程解决八皇后
Jul 20 Python
python检索特定内容的文本文件实例
Jun 05 Python
Win10下python3.5和python2.7环境变量配置教程
Sep 18 Python
python简单贪吃蛇开发
Jan 28 Python
pandas实现将dataframe满足某一条件的值选出
Jun 12 Python
python 返回一个列表中第二大的数方法
Jul 09 Python
Python线上环境使用日志的及配置文件
Jul 28 Python
python 列表、字典和集合的添加和删除操作
Dec 16 Python
Pytorch实现神经网络的分类方式
Jan 08 Python
如何通过python实现IOU计算代码实例
Nov 02 Python
Python 数据分析之逐块读取文本的实现
Dec 14 Python
Python可视化神器pyecharts绘制水球图
Jul 07 Python
Python3 获取文件属性的方式(时间、大小等)
Mar 12 #Python
Python获取对象属性的几种方式小结
Mar 12 #Python
深入浅析Python 命令行模块 Click
Mar 11 #Python
python字典和json.dumps()的遇到的坑分析
Mar 11 #Python
解决pyecharts运行后产生的html文件用浏览器打开空白
Mar 11 #Python
在django admin详情表单显示中添加自定义控件的实现
Mar 11 #Python
django admin 添加自定义链接方式
Mar 11 #Python
You might like
php下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
JavaScript操作DOM元素的childNodes和children区别
2015/04/01 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
基于javascript实现根据身份证号码识别性别和年龄
2016/01/22 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
Node.js搭建小程序后台服务
2018/01/03 Javascript
vue-cli+webpack项目 修改项目名称的方法
2018/02/28 Javascript
jQuery实现checkbox全选功能完整实例
2018/07/12 jQuery
JavaScript实现多个物体同时运动
2020/03/12 Javascript
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
2020/04/29 Javascript
浅谈vue中resetFields()使用注意事项
2020/08/12 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
[00:44]TI7不朽珍藏III——军团指挥官不朽展示
2017/07/15 DOTA
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
Python黑魔法@property装饰器的使用技巧解析
2016/06/16 Python
使用Python3制作TCP端口扫描器
2017/04/17 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
python实现播放音频和录音功能示例代码
2018/12/30 Python
利用python提取wav文件的mfcc方法
2019/01/09 Python
python实现文件的分割与合并
2019/08/29 Python
Python post请求实现代码实例
2020/02/28 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
Python如何实现线程间通信
2020/07/30 Python
Python 在 VSCode 中使用 IPython Kernel 的方法详解
2020/09/05 Python
美国男女折扣服饰百货连锁店:Stein Mart
2017/05/02 全球购物
Shopee新加坡:东南亚与台湾电商平台
2019/01/25 全球购物
澳大利亚最超值的自行车之家:Reid Cycles
2019/03/24 全球购物
工商管理应届生求职信
2013/10/07 职场文书
小学优秀班主任事迹材料
2014/05/17 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
软件研发工程师岗位职责
2014/09/30 职场文书
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python