python入门18 继承和多态
继承:子类继承父类的属性和方法 class 子类名(父类1,父类2)
多态:子类重写父类的方法
判断对象是否是某个类的实例: isinstance(object,class)
父类-汽车类
#coding:utf-8
#/usr/bin/python
"""
2018-11-18
dinghanhua
继承 多态
""" '''定义一个父类-汽车类 无参构造函数,私有属性speed,方法start,speedup(每次速度+10),speeddown(每次速度-10),stop'''
class auto:
def __init__(self):
self.__speed = 0 #封装 def __getspeed(self):
return '当前速度:%s'%self.__speed def start(self):
self.__speed = 10 def stop(self):
self.__speed = 0
print('auto 停车') def speedup(self):
self.__speed += 10
print('auto 加速' + self.__getspeed()) def speeddown(self):
if self.__speed > 10:
self.__speed -= 10
print('auto 减速' +self.__getspeed())
else:
self.stop()
子类bus
'''子类bus(auto),增加乘客数量passenger,上车geton,下车getoff.重写start方法--多态'''
class bus(auto): #继承 def __init__(self):
self.passenger = 0 #当前乘客数
self.maxpassenger = 50 # 最大乘客数 def start(self):
print('bus 出发')
auto.start(self) def geton(self,num):
if self.passenger + num <= self.maxpassenger:
self.passenger += num
print('bus 上客,当前乘客数:%s' % self.passenger)
else:
raise OverflowError('bus 超载') def getoff(self,num):
if self.passenger >= num:
self.passenger -= num
print('bus 下客,当前乘客数:%s' % self.passenger)
else:
raise Exception('bus 下车乘客数 多于 当前乘客数')
子类car
'''子类car,重写start方法'''
class car(auto):
def __init__(self):
self.maxpassenger = 4 #最大乘客数 def start(self):
print('car 出发')
auto.start(self)
car,bus的子类taxi
'''子类taxi继承自car,bus'''
class taxi(car,bus): #多重继承,先继承car,再继承bus
def __init__(self):
bus.__init__(self)
car.__init__(self) #注意顺序,最大乘客数=4
函数参数为对象
'''定义一个函数,参数是auto对象'''
def test_auto(autoobject):
autoobject.start()
autoobject.speedup()
autoobject.speeddown()
autoobject.stop()
if isinstance(autoobject, bus): #判断是某个类的实例
autoobject.geton(4)
autoobject.getoff(2)
实例化对象
if __name__ == '__main__': #实例化
auto1 = auto()
car1 = car()
bus1 = bus()
taxi1 = taxi()
#调用函数test_auto
test_auto(auto1)
test_auto(car1)
test_auto(bus1)
test_auto(taxi1)
分别调用的是:car.start(), auto.speedup(),auto.speeddown(),auto.stop(), bus.geton(),bus.getoff()
the end!
python入门18 继承和多态的更多相关文章
- Python 面向对象编程 继承 和多态
Python 面向对象编程 继承 和多态 一:多继承性 对于java我们熟悉的是一个类只能继承一个父类:但是对于C++ 一个子类可以有多个父亲,同样对于 Python一个类也可以有多个父亲 格式: c ...
- Python 中的继承、多态和封装
涉及问题: Python 中如何实现多继承,会有什么问题? Python 中的多态与静态方法有什么区别? 答案要点如下: Python 中的继承,就是在定义类时,在括号中声明父类,简单示例如下: cl ...
- Python面向对象:继承和多态
继承与多态简介: 继承可以把父类的所有功能都直接拿过来,这样就不必重零做起,子类只需要新增自己特有的方法,也可以把父类不适合的方法覆盖重写. 动态语言的鸭子类型特点决定了继承不像静态语言那样是必须的. ...
- python类的继承和多态
现在属于是老年人的脑子,东西写着写着就忘了,东西记着记着就不知道了.之前学C++的时候就把类.对象这块弄得乱七八糟,现在是因为很想玩python,所以就看看python的类和对象. 就像说的,类有三个 ...
- Python入门之面向对象的多态和继承
本章内容 Python面向对象的多态和继承对比 ========================================= 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的 ...
- python中的继承和多态
继承 继承的表现方式: class Animal(): pass class Cat(Animal): #animal是cat的父类,也可以说是基类 pass print(Cat.__bases__) ...
- Python笔记(三)继承和多态、动态语言
一.继承 先定义一个A类 class A(object): def fun(self): print "Run A fun()" 在定义一个B类 class B(A): pass ...
- python大法好——继承、多态
1.继承 类的继承 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制. 通过继承创建的新类称为子类或派生类,被继承的类称为基类.父类或超类. 继承语法 class 派 ...
- Python入门之面向对象的多态
本章目录: 一.多态 二.多态性 三.鸭子类型 ============================== 一.多态 多态指的是一类事物有多种形态. 动物有多种形态:人,狗,猪. import ab ...
随机推荐
- 认识HTML中表格、列表标签以及表单控件
前端之HTML,CSS(二) HTML标签 列表标签 无序列表:闭标签,由<ul><li></li>...</ul>组合而成,效果成纵向列表.格式:&l ...
- List<Type> 随机排序
public List<T> GetRandomList<T>(List<T> inputList){ //Copy to a array T[] copyArra ...
- Proguard breaking audio file in assets or raw
http://stackoverflow.com/questions/21440572/proguard-breaking-audio-file-in-assets-or-raw Issue: I h ...
- Nginx+Keepalived配置
1. Nginx安装 (1) 环境:分别在2台服务器上部署nginx且步骤一致: 如192.138.86.1和192.138.86.2 (2) 下载官网最新稳定版,地址:https://nginx.o ...
- nyoj 791——Color the fence——————【贪心】
Color the fence 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 Tom has fallen in love with Mary. Now Tom w ...
- flask表单flask-wtf
一.安装pip install flask-wtf 二.创建一个flask的项目引入相对应的包 from flask import Flask,render_template import flask ...
- model操作涉及的所有字段(API)
一旦 数据模型 创建完毕, 自然会有存取数据的需要.本文档介绍了由 models 衍生而来的数据库抽象API,及如何创建,得到及更新对象. 贯穿本参考, 我们都会引用下面的民意测验(Poll)应用程序 ...
- [SDOI2013]刺客信条
Description 故事发生在1486 年的意大利,Ezio 原本只是一个文艺复兴时期的贵族,后来因为家族成员受到圣殿骑士的杀害,决心成为一名刺客.最终,凭借着他的努力和出众的天赋,成为了杰出的刺 ...
- 《C#高效编程》读书笔记02-用运行时常量(readonly)而不是编译期常量(const)
C#有两种类型的常量:编译期常量和运行时常量.两者有截然不同的行为,使用不当的话,会造成性能问题,如果没法确定,则使用慢点,但能保证正确的运行时常量. 运行时常量使用readonly关键字声明,编译期 ...
- 天气小雨, 心情多云, 练习标准的键盘ABC打法
今天看到饿了么转型生活做千亿美元公司 突然想到一些就写下来 当时外卖一份8元 10元的年代那个开心啊 很久以前宁可跑个远, 都不愿意叫外卖 叫了大概1年的外卖了, 之前还感到便宜多样, 现在感觉到的是 ...