zoukankan      html  css  js  c++  java
  • Python 面向对象编程 继承 和多态

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

    一:多继承性

      对于java我们熟悉的是一个类只能继承一个父类;但是对于C++ 一个子类可以有多个父亲,同样对于 Python一个类也可以有多个父亲

         格式: class 子类(父类1,父类2...):

      如代码:我们创建 人类,课程类,学生类继承人类,大学生类继承学生类和课程类,也就是说大学生类,有 学生类,课程类,人类等特性;

    # python 多继承
    class Person:  #声明人类
        def __init__(self, name, age):
            self.name = name
            self.age = age
            print('create people:', name, age)
    p1 = Person('Jerry',13)
    #输出:
    #
    #   create people: Jerry 13
    
    class Student(Person):  #学生类
        def __init__(self,name,age,school):
            Person.__init__(self,name,age)  #先调用父类的初始化方法
            self.school = school
            print("his School is",school)
    stu1 = Student('Tom',20,"Beijing")
    ##输出
    #   create people: Tom 20
    #   his School is Beijing
    
    class Course:   #创建课程类
        def __init__(self,course):
            self.course = course
            print('has the course ',course)
    cus1 = Course('Python')
    ##输出
    #   has the course  Python
    
    class College(Student,Course):  #创建大学生类,继承学生类,课程类
        def __init__(self,name,age,school,course,depart):
            Student.__init__(self,name,age,school)  #同样先初始化父类方法
            Course.__init__(self,course)
            self.depart = depart;
            print("the college depart is",depart)
    
    college1 = College("小明",18,"清华大学",'在学习Python','专业网络工程')
    
    ## 输出结果
    #   create people: 小明 18
    #   his School is 清华大学
    #   has the course  在学习Python
    #   the college depart is 专业网络工程

    二:Python 多态

       通常我们认为继承也是多态的和种,在java中的 接口和实现,在OC中的协议,这是一些对类的多态形式,那么 Python中有像Java那样的接口和实现,及OC中的分类,扩展等多态形式吗?,答案目前我认为是没有的,因为Python是一种弱类型的,解析型语言,但是一些不太容易看出来的多态形式,我们可以看下下面代码

    class BMWCar:   #宝马汽车类
        def __init__(self):
            print("买辆宝马汽车")
        def drive(self):    #汽车有行驶的方法
            print('试驾BMW')
    
    class BenzCar:  #奔驰汽车类
        def __init__(self):
            print('买了辆奔驰汽车')
        def drive(self):
            print('试驾奔驰')
    
    class TeslaCar:     #特斯拉汽车,未在国内上市,不提供试驾
        def __init__(self):
            print('该汽车还没上市')    #买不到该汽车
    
    class Person:   #人类
        def driveCar(self,car): #试驾汽车
            car.drive()
    
    #让人去试驾汽车
    #买车
    bmw = BMWCar()
    benzi = BenzCar()
    tesla= TeslaCar()
    #试驾
    onePerson = Person()
    onePerson.driveCar(bmw)
    onePerson.driveCar(benzi)
    onePerson.driveCar(tesla)
    
    ##输出结果
    #   买辆宝马汽车
    #   买了辆奔驰汽车
    #   该汽车还没上市
    #   试驾BMW
    #   试驾奔驰
    
    #可以看到上述结果,宝马、奔驰都能试驾;特斯拉不能试驾

    上面Person对象有个driveCar方法,传参数为一辆汽车,由于我们不知道汽车是什么 牌子的,所以这里是多态,什么车,执行什么车的方法,但是不是所有的车都能试驾,比如玩具车,哈哈

    关于Pthon的多态,我们不必太过于纠结,看上面Pthon的设计之美,给人一种清爽的感觉!

  • 相关阅读:
    并发编程三、线程可见性的底层原理
    并发编程二、线程的安全性和线程通信
    并发编程一、多线程的意义和使用
    Java进程监控
    分布式消息通信之RabbitMQ_Note
    分布式消息通信之RabbitMQ_02
    分布式消息通信之RabbitMQ_01
    分布式消息通信之RabbitMQ Tutorials
    SpringMVC重点分析
    Apache POI 4.0.1版本读取本地Excel文件并写入数据库(兼容 xls 和 xlsx)(五)
  • 原文地址:https://www.cnblogs.com/cocoajin/p/3674076.html
Copyright © 2011-2022 走看看