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程序中访问Java类的简单示例
Apr 20 Python
windows下ipython的安装与使用详解
Oct 20 Python
Python json 错误xx is not JSON serializable解决办法
Mar 15 Python
python字符串string的内置方法实例详解
May 14 Python
在python中利用KNN实现对iris进行分类的方法
Dec 11 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
Sep 29 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
Python中base64与xml取值结合问题
Dec 22 Python
PyTorch加载预训练模型实例(pretrained)
Jan 17 Python
python中resample函数实现重采样和降采样代码
Feb 25 Python
Django ORM filter() 的运用详解
May 14 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
Mar 04 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
让你的网站首页自动选择语言转跳
2006/12/06 PHP
php实现查看邮件是否已被阅读的方法
2013/12/03 PHP
ThinkPHP验证码使用简明教程
2014/03/05 PHP
php代码审计比较有意思的例子
2014/05/07 PHP
php计算两个坐标(经度,纬度)之间距离的方法
2015/04/17 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
2019/12/13 PHP
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
javascript图像处理—仿射变换深度理解
2013/01/16 Javascript
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
jquery链式操作的正确使用方法
2014/01/06 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
微信小程序上传图片到服务器实例代码
2017/11/07 Javascript
weebox弹出窗口不居中显示的解决方法
2017/11/27 Javascript
JS中Map和ForEach的区别
2018/02/05 Javascript
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
移动端手指操控左右滑动的菜单
2019/09/08 Javascript
JS实现打砖块游戏
2020/02/14 Javascript
原生JS实现烟花效果
2020/03/10 Javascript
彻彻底底地理解Python中的编码问题
2018/10/15 Python
python获取本机所有IP地址的方法
2018/12/26 Python
Python 模拟动态产生字母验证码图片功能
2019/12/24 Python
解决torch.autograd.backward中的参数问题
2020/01/07 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
2020/02/15 Python
python利用faker库批量生成测试数据
2020/10/15 Python
大韩航空官方网站:Korean Air
2017/10/25 全球购物
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
大学专科生推荐信范文
2013/11/23 职场文书
初一地理教学反思
2014/01/16 职场文书
幼儿园教师考核制度
2014/02/01 职场文书
人民调解员培训方案
2014/06/05 职场文书
Python字典和列表性能之间的比较
2021/06/07 Python
Golang并发工具Singleflight
2022/05/06 Golang