继承:子类继承父类的属性和方法 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 start(self): print(‘car 出发‘) auto.start(self)
car,bus的子类taxi
‘‘‘子类taxi继承自car,bus‘‘‘ class taxi(car,bus): #多重继承,先继承car,再继承bus def __init__(self): self.passenger = 0 #当前乘客数 self.maxpassenger = 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!
原文地址:https://www.cnblogs.com/dinghanhua/p/9978274.html
时间: 2024-10-24 06:42:15