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抓取京东价格分析京东商品价格走势
Jan 09 Python
python基础教程之循环介绍
Aug 29 Python
简单讲解Python中的字符串与字符串的输入输出
Mar 13 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
Aug 07 Python
python实现txt文件格式转换为arff格式
May 31 Python
python conda操作方法
Sep 11 Python
Python三元运算与lambda表达式实例解析
Nov 30 Python
pytorch实现MNIST手写体识别
Feb 14 Python
Pytorch环境搭建与基本语法
Jun 03 Python
在Python中字典按值排序的实现方法
Nov 12 Python
python爬虫scrapy图书分类实例讲解
Nov 23 Python
python实现求纯色彩图像的边框
Apr 08 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检测网页是否被百度收录的函数代码
2013/10/09 PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
2014/11/01 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
PHP中创建和编辑Excel表格的方法
2018/09/13 PHP
JS实现在Repeater控件中创建可隐藏区域的代码
2010/09/16 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
JS实现在页面随时自定义背景颜色的方法
2015/02/27 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(基于jquery)
2015/11/18 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
2016/02/23 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
JavaScript创建防篡改对象的方法分析
2018/12/30 Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
2019/02/01 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
2019/05/26 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
微信小程序实现聊天室
2020/08/21 Javascript
Python2中的raw_input() 与 input()
2015/06/12 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
django 环境变量配置过程详解
2019/08/06 Python
Python实现线性插值和三次样条插值的示例代码
2019/11/13 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
2020/09/25 Python
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
中东奢侈品购物网站:Ounass
2020/09/02 全球购物
平面设计岗位职责
2013/12/14 职场文书
微观物理专业自荐信
2014/01/26 职场文书
会计求职信范文
2014/05/24 职场文书
省级优秀班集体申报材料
2014/05/25 职场文书
2015新员工工作总结范文
2015/10/15 职场文书
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python