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中sleep函数用法实例分析
Apr 29 Python
以一个投票程序的实例来讲解Python的Django框架使用
Feb 18 Python
python 换位密码算法的实例详解
Jul 19 Python
python实现m3u8格式转换为mp4视频格式
Feb 28 Python
Python简单计算给定某一年的某一天是星期几示例
Jun 27 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
Dec 13 Python
Django框架首页和登录页分离操作示例
May 28 Python
在python中实现同行输入/接收多个数据的示例
Jul 20 Python
Django分组聚合查询实例分享
Apr 29 Python
Django中的AutoField字段使用
May 18 Python
Python中openpyxl实现vlookup函数的实例
Oct 28 Python
python用tkinter开发的扫雷游戏
Jun 01 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实现的常规正则验证helper公共类完整实例
2017/04/27 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
详解如何实现Laravel的服务容器的方法示例
2019/04/15 PHP
PHP反射原理与用法深入分析
2019/09/28 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
Jquery的Tabs内容轮换效果实现代码,几行搞定
2014/02/12 Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
2015/04/13 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
2016/08/24 Javascript
浅析如何利用JavaScript进行语音识别
2016/10/27 Javascript
Vue2.0表单校验组件vee-validate的使用详解
2017/05/02 Javascript
微信小程序 生命周期函数详解
2017/05/24 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
2018/05/29 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
详解puppeteer使用代理
2018/12/27 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
2019/04/01 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
bootstrap实现嵌套模态框的实例代码
2020/01/10 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
详细解读Python的web.py框架下的application.py模块
2015/05/02 Python
python实现从字典中删除元素的方法
2015/05/04 Python
Python中py文件引用另一个py文件变量的方法
2018/04/29 Python
Python中使用Counter进行字典创建以及key数量统计的方法
2018/07/06 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
Python基于template实现字符串替换
2020/11/27 Python
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
安德玛加拿大官网:Under Armour加拿大
2019/10/02 全球购物
复核员上岗演讲稿
2014/01/05 职场文书
2015学校年度工作总结
2015/05/11 职场文书
2016民族团结先进个人事迹材料
2016/02/26 职场文书
MySQL GRANT用户授权的实现
2021/06/18 MySQL
德生TECSUN S-2000使用手册文字版
2022/05/10 无线电