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 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

python入门18 继承和多态的相关文章

python类的继承和多态

python类的继承和多态 现在属于是老年人的脑子,东西写着写着就忘了,东西记着记着就不知道了.之前学C++的时候就把类.对象这块弄得乱七八糟,现在是因为很想玩python,所以就看看python的类和对象. 就像说的,类有三个特征:封装.继承.多态. 1.封装:类封装了一些方法,可通过一定的规则约定方法进行访问权限. C++中的成员变量有public.private.ptotected. 在python中,默认的成员变量都是public的,如果成员变量前面是加两个下划线,表示该成员变量是私有的

Python 面向对象编程——继承和多态

1.1   继承和多态 1.1.1   继承 当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Super class). >>> class Animal(object): ...    def run(self): ...        print('Animal is running...') #父类 ... >>> class Dog(Ani

python 面向对象四 继承和多态

一.继承 1 class Animal(object): 2 def run(self): 3 print('Animal is running...') 4 5 class Dog(Animal): 6 7 def run(self): 8 print('Dog is running...') 9 10 def eat(self): 11 print('Eating meat...') 12 13 dog = Dog() 14 dog.run() 1 Dog is running... 当子类

python大法好——继承、多态

1.继承 类的继承 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制. 通过继承创建的新类称为子类或派生类,被继承的类称为基类.父类或超类. 继承语法 class 派生类名(基类名) 在python中继承中的一些特点: 1.如果在子类中需要父类的构造方法就需要显示的调用父类的构造方法,或者不重写父类的构造方法.详细说明可查看:python 子类继承父类构造函数说明. 2.在调用基类的方法时,需要加上基类的类名前缀,且需要带上 self 参数变量.区别在于类中调用

python中的继承和多态

继承 继承的表现方式: class Animal(): pass class Cat(Animal): #animal是cat的父类,也可以说是基类 pass print(Cat.__bases__)#查看Cat的所有父类 单继承 一个类只有一个父类 狗和鸟都是动物,都拥有吃喝这两种技能,但游泳是狗的特殊技能,飞逝鸟的特殊技能,只能在本类中进行扩展 子类中独有方法如何实现 实现了子类中独有方法,那子类有独有的属性呢?我养了一个小泰迪,我给他起个名字,但是鸟就没有这个属性 class Animal

Python面向对象、继承和多态

面向对象变成的基本思想:类和实例 类用于定义抽象类型---------------------人-----------------------------class  Person(object):------------------数据封装class Person(object): pass                                                                 def __init__(self,name): self.name = n

Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)

Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态) 1.面向对象的三大特性: (1)继承 ? 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以称为基类或超类,新建的类称为派生类或子类. ? 在Python中实现继承非常简单,在声明类的时候,在类名后面添加一个小括号,就可以完成继承关系.单纯的从代码的层面上来看当两个类具有相同的功能或者特征的时候就可以使用继承.提取一个父类,这个父类中编写者两个类相同的部分,然后两个类分别去继承这个类就可以

Python学习(七)面向对象 ——继承和多态

Python 类继承和多态 在OOP(Object Oriented Programming)程序设计中,当我们定义一个class的时候,可以从某个现有的class 继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Super class). 我们先来定义一个class,名为Person,表示人,定义属性变量 name 及 sex (姓名和性别):定义一个方法:当sex是male时,print he:当sex 是female时,pr

Python 面向对象(创建类和对象,面向对象的三大特性是指:封装、继承和多态,多态性)

概念:                                                                                                                                                     ·        面向过程:根据业务逻辑从上到下写垒代码 ·        函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 ·        面向对象:对函数进行分类和封装,