博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 面向对象编程 继承 和多态
阅读量:7071 次
发布时间:2019-06-28

本文共 2228 字,大约阅读时间需要 7 分钟。

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 13class 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 Beijingclass Course:   #创建课程类    def __init__(self,course):        self.course = course        print('has the course ',course)cus1 = Course('Python')##输出#   has the course  Pythonclass 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的设计之美,给人一种清爽的感觉!

转载地址:http://wlzml.baihongyu.com/

你可能感兴趣的文章
构建自己的PHP框架--构建模版引擎(1)
查看>>
Linux之一次性安装开发工具:yum groupinstall Development tools
查看>>
dos.orm的事务处理
查看>>
Odoo 二次开发教程(五)-新API的介绍与应用
查看>>
VC++ 一个简单的Log类
查看>>
Java内存模型深度解析:重排序 --转
查看>>
CentOS防火墙iptables的配置方法详解
查看>>
webpack搭建前端一条龙服务
查看>>
1.ASP.NET MVC使用EPPlus,导出数据到Excel中
查看>>
redis学习笔记
查看>>
ios UIApplocation 中APP启动方式
查看>>
推送知识点2
查看>>
css中import与link用法区别
查看>>
jQuery拖动剪裁图片作为头像
查看>>
Android 5.0 全新的动画
查看>>
MGW——美团点评高性能四层负载均衡
查看>>
iOS根据网络图片的size大小设置UIImageView的大小
查看>>
[Ramda] Curry and Uncurry Functions with Ramda
查看>>
JavaScript的arguements
查看>>
OpenGL中的二维编程——从简单的矩形开始
查看>>