码迷,mamicode.com
首页 > 编程语言 > 详细

python入门18 继承和多态

时间:2018-11-18 16:37:46      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:instance   ror   封装   tsp   类重写   sel   alt   python入门   属性   

 

 

继承:子类继承父类的属性和方法  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!

 

python入门18 继承和多态

标签:instance   ror   封装   tsp   类重写   sel   alt   python入门   属性   

原文地址:https://www.cnblogs.com/dinghanhua/p/9978274.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!