#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@File:继承_子类和父类的关系.py
@E-mail:364942727@qq.com
@Time:2020/4/4 12:39 上午
@Author:Nobita
@Version:1.0
@Desciption:父类和子类关系/继承
""" class Car():
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
self.meter = 0 def get_car_description(self):
long_name = str(self.make) + ' ' + self.model + ' ' + self.year
return long_name def read_meter(self): # 读取公里数的方法
print('This car have ' + str(self.meter) + ' mi') def update_meter(self, mileage): # 定义了一个修改公里数的方法,以后要修改公里数的时候,就不需要通过实例化去修改属性的值了
self.meter = mileage def increment_meter(self, miles): # 新增加的公里数,做加法运算
self.meter += miles my_car = Car('china', 'audi', '') print(my_car.model)
print(my_car.get_car_description().title()) # title方法语法 -> str.title() //返回"标题化"的字符串,就是说所有单词都是以大写开始。
my_car.read_meter()
my_car.meter = 50 # 通过实例化对属性的值做改变
my_car.read_meter()
my_car.update_meter(100) # 通过之前定义的方法修改属性的值
my_car.read_meter()
my_car.increment_meter(200)
my_car.read_meter() class Battery():
def __init__(self, battery_size=70):
self.battery_size = battery_size def describe_battery(self):
print('这个车有' + str(self.battery_size) + '的电容量') def get_range(self):
if self.battery_size == 70:
car_range = 240
elif self.battery_size <= 100 and self.battery_size >= 75:
car_range = 270
msg = '这个车能跑{}公里'.format(car_range)
return msg class ElectricCar(Car): # 创造ElectricCar(电动汽车)类
def __init__(self, make, model, year):
super().__init__(make, model, year)
self.battery = Battery() def describe_battery(self):
print('电动汽车特有的属性是{}'.format(self.battery.battery_size)) def read_meter(self):
# 父类当中的一个方法,对子类没有帮助;在子类当中,定义一个父类当中同名字的方法名,那么就会忽略父类的方法,取其精华。(重写父类的方法)
print('这个方法是重写父类的方法,会忽略父类当中的read_meter()方法') my_ele_car = ElectricCar('usa', 'baoma', '') print(my_ele_car.get_car_description().title())
my_ele_car.read_meter()
my_ele_car.describe_battery()
my_ele_car.battery.describe_battery()
print(my_ele_car.battery.battery_size)
print(my_ele_car.battery.get_range())
my_ele_car.battery.battery_size = 80 # 通过实例化对属性的值做改变
print(my_ele_car.battery.get_range()) '''
super()是一个特殊的函数,它让父类和子类可以关联起来。
这段代码让python调用ElectricCar的父类方法__init__(),让ElectricCar实例包含父类的所有属性。
Python中类的初始化方法是__init__(),因此父类、子类的初始化方法都是这个,
如果子类不实现__init__()这个函数,初始化时调用父类的初始化函数,
如果子类实现了这个函数,则要在这个函数里显式调用一下父类的__init__(),
这跟C++,jAVA不一样,他们是自动调用父类构造函数的。
'''

Python父类和子类关系/继承的更多相关文章

  1. python——父类与子类的一些说明

    Python中类的初始化方法是__init__(),因此父类.子类的初始化方法都是这个,如果子类不实现__init__()这个函数,初始化时调用父类的初始化函数, 如果子类实现了这个函数,则要在这个函 ...

  2. 关于swift使用CocoaPods倒入三方库的framework后父类倒入子类无法继承的问题

    今天开发项目的时候遇到这么一个问题在使用cocoapods倒入了三方库后我在BaseController中倒入三方库,其余controller继承自basecontroller,然而在继承的子类中无法 ...

  3. Python父类调用子类

    首先说明,上面的标题其实是不正确的,Python是一门解释型.动态数据类型的高级语言,运行时,动态判断调用对象,其实还是子类自己在调用自己的方法或属性. 举个例子(copy过来的):SocketSer ...

  4. python父类调用子类了解一下

    class B(): def __init__(self): pass def start(self): print(self.parse()) class A(B): def __init__(se ...

  5. c++ --> 父类与子类间的继承关系

    父类与子类间的继承关系 一.父类与子类 父类与子类的相互转换 1.派生类的对象可以赋给基类,反之不行 2.基类的指针可以指向派生类,反之不行 3.基类的引用可以初始化为派生类的对象,反之不行 4.派生 ...

  6. Python多类继承中,子类默认继承哪个父类的构造函数__init__

    [1]python中如果子类有自己的构造函数,不会自动调用父类的构造函数,如果需要用到父类的构造函数,则需要在子类的构造函数中显式的调用. [2]如果子类没有自己的构造函数,则会直接从父类继承构造函数 ...

  7. python的父类和子类中关于继承的不同版本的写法

    Python 2.7中的继承 在Python 2.7中,继承语法稍有不同,ElectricCar 类的定义类似于下面这样: class Car(object): def __init__(self, ...

  8. python子类如何继承父类的实例变量?

    类型1:父类和子类的实例变量均不需要传递 class A(object): def __init__(self): self.name = "cui" def get_name(s ...

  9. java 子类不能继承父类的static方法

    先来看一段代码 /** * Created by bjchengpeng on 2018/7/19. */ /**运行结果 * woof * woofaa * * woof * Basenjiaa * ...

随机推荐

  1. 从sslyze看TLS证书的点点滴滴

    纵观眼下,https已经深入大街小巷,成为网络生活中不可或缺的一部分了.提到了https,我们又不得不想到TLS(SSL),而提到了TLS,我们又不得不提到一个让人捉摸不透的东西:TLS证书. 关于证 ...

  2. Hive分析窗口函数

    数据准备 CREATE EXTERNAL TABLE lxw1234 ( cookieid string, createtime string, --day pv INT ) ROW FORMAT D ...

  3. Redis 6.0 新增功能 - ACL

    Redis 6.0 ACL 期待已久的ACL终于来了,大家知道在redis集群中只有一个db,在多项目操作时可以通过key前缀来区分,但是还是能获取其它key,这样就带来了安全风险. Access C ...

  4. BFS与DFS常考算法整理

    BFS与DFS常考算法整理 Preface BFS(Breath-First Search,广度优先搜索)与DFS(Depth-First Search,深度优先搜索)是两种针对树与图数据结构的遍历或 ...

  5. HTML5调用笔记本或手机摄像头

    网上找了些文章测试了下,到现在为止还是很多浏览器不支持,所以也没有什么实用价值啊. 以下代码在笔记本电脑浏览器chrome25,irefox19上测试通过(FF需要在地址栏输入about:config ...

  6. effective-java学习笔记---静态工厂方法替代构造方法

    使用静态方法的优点: 1.它们是有名字的,生成的客户端代码更易阅读. 如:返回素数的静态方法 BigInteger.probablePrime 2.与构造方法不同,它们不需要每次调用时都创建一个对象. ...

  7. 粒子群优化算法(PSO)之基于离散化的特征选择(FS)(一)

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 作者:Geppetto 在机器学习中,离散化(Discretiza ...

  8. html-css:浮动_清除浮动

    1.浮动 清除浮动之前我们首先需要了解为什么要清除浮动 1. 假设我们有一个父盒子,不设置高度,其高度有内部子盒子的大小自动撑开,这样是完全可行的,因为有时候我们并不想直接固定死父盒子的大小,而是根据 ...

  9. 常见Web安全漏洞--------防盗链

    1,防盗链防止盗用自己服务上的东西... 2,XSS服务上有这么一张图: <!DOCTYPE html> <html> <head lang="en" ...

  10. Python第十一章-常用的核心模块03-json模块

    python 自称 "Batteries included"(自带电池, 自备干粮?), 就是因为他提供了很多内置的模块, 使用这些模块无需安装和配置即可使用. 本章主要介绍 py ...