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 20 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
May 18 Python
tensorflow 加载部分变量的实例讲解
Jul 27 Python
python读取csv和txt数据转换成向量的实例
Feb 12 Python
Python批量删除只保留最近几天table的代码实例
Apr 01 Python
Django实现跨域的2种方法
Jul 31 Python
flask框架jinja2模板与模板继承实例分析
Aug 01 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
python def 定义函数,调用函数方式
Jun 02 Python
Python数据可视化实现多种图例代码详解
Jul 14 Python
Python中logging日志记录到文件及自动分割的操作代码
Aug 05 Python
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
Oct 16 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字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
PHP JSON格式的中文显示问题解决方法
2015/04/09 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
javascript编程起步(第六课)
2007/02/27 Javascript
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
基于node.js的快速开发透明代理
2010/12/25 Javascript
javascript学习笔记(一) 在html中使用javascript
2012/06/18 Javascript
jquery和ajax的关系详细介绍
2013/11/29 Javascript
js对象内部访问this修饰的成员函数示例
2014/04/27 Javascript
Js+Jq获取URL参数的集中方法示例代码
2014/05/20 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
2015/10/14 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
纯js三维数组实现三级联动效果
2017/02/07 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
ionic3双击返回退出应用的方法
2019/09/17 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
JavaScript实现联动菜单特效
2020/01/07 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
node.js爬虫框架node-crawler初体验
2020/10/29 Javascript
[14:25]教你分分钟做大人:主宰(HEROS)
2014/12/08 DOTA
以一个投票程序的实例来讲解Python的Django框架使用
2016/02/18 Python
Python实现字符串格式化输出的方法详解
2017/09/20 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
HTML5添加禁止缩放功能
2017/11/03 HTML / CSS
餐饮业会计岗位职责
2013/12/19 职场文书
全国文明单位申报材料
2014/05/31 职场文书
岗位工作说明书
2014/07/29 职场文书
2015学校图书管理员工作总结
2015/05/11 职场文书
生日宴会家属答谢词
2015/09/29 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书
Python利用FlashText算法实现替换字符串
2022/03/31 Python
Java完整实现记事本代码
2022/06/16 Java/Android