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 ...
随机推荐
- Oracle SET UNUSED的用法
SET UNUSED的用法 原理:清楚掉字典信息(撤消存储空间),不可恢复. 可以使用 SET UNUSED选项标记一列或者多列不可用. 使用DROP SET UNUSED选项删除被被标记 ...
- 【Python】ACL限制结果检测
最近帮客户做ACL的限制检测,也就是客户对一些站点做了acl限制,只有省内或内网可以访问,然后让我 去验证acl做的是否正确,简单写了个粗略的脚本,分享下,不足之处日后改进(如多线程等),脚本如下: ...
- 【研究】缓慢的http拒绝服务攻击
1 详细描述: 缓慢的http拒绝服务攻击是一种专门针对于Web的应用层拒绝服务攻击,攻击者操纵网络上的肉鸡,对目标Web服务器进行海量http request攻击,直到服务器带宽被打满,造成了拒绝服 ...
- Python入门笔记——(1)数字与表达式
一.算术运算 整除:// 取余:% 乘方:** (a ** b = pow(a, b)) 十六进制表示:0x...,八进制表示0... round(x [, n]):对x从小数点第n位取四舍五入结果, ...
- spark第四篇:Running Spark on YARN
确保HADOOP_CONF_DIR或者YARN_CONF_DIR指向hadoop集群配置文件目录.这些配置用来写数据到hdfs以及连接yarn ResourceManager.(在$SPARK_HOM ...
- shell 实现文件改名
修改文件名可以有不同的命令方式,mv 可以实现,但是使用rename 这种专业的改名字很好 对于单个的文件,可以直接使用以上的命令,那如果有大量的类似格式的文件名需要修改成其他格式的,该如何呢? 创建 ...
- drupal 7 安装失败后的补救办法
在安装 drupal 7 时安装,导入数据库已经成功,但是在安装语言包的时候卡住了,没有进行最后三步,管理员帐号没能启用.此时我退出安装,访问网站,没有问题.但是管理员admin的密码没有设置,以至于 ...
- TOJ 3488 Game Dice
描述 In the game of Dungeons & Dragons, players often roll multi-sided dice to generate random num ...
- BNU 20860——Forwarding Emails——————【强连通图缩点+记忆化搜索】
Forwarding Emails Time Limit: 1000ms Memory Limit: 131072KB This problem will be judged on UVA. Orig ...
- 省市区json数据
window.LocalList = [ { region:{ name:'北京市', code:'11', state:[ { name:'北京', code:'01', city:[ {name: ...