Python面向对象类继承和组合实例分析


Posted in Python onMay 28, 2018

本文实例讲述了Python面向对象类继承和组合。分享给大家供大家参考,具体如下:

在python3中所有类默认继承object,凡是继承了object的类都成为新式类,以及该子类的子类Python3中所有的类都是新式类,没有集成object类的子类成为经典类(在Python2中没有集成object的类以及它的子类都是经典类

继承式用来创建新的类的一种方式,好处是减少重复代码

class People:
  def __init__(self,name,age):
    self.name=name
    self.age=age
  def walking(self):
    print('%s is walking ' %self.name)
  def talking(self):
    print('%s is talking '%self.name)
class Teacher(People):
  pass
class Student(People):
  pass
t1=Teacher('egon',18)
print(t1.name,t1.age)
t1.walking()
t1.talking()
s1=Student('xiaobai',22)
print(s1.name,s1.age)
s1.talking()
s1.walking()

执行结果

egon 18
egon is walking
egon is talking
xiaobai 22
xiaobai is talking
xiaobai is walking

class People:
  def __init__(self,name,age,sex):
    self.name=name
    self.age=age
    self.sex=sex
  def walking(self):
    print('%s is walking ' %self.name)
  def talking(self):
    print('%s is talking '%self.name)
class Teacher(People):
  def __init__(self,name,age,sex,level,salary):
    People.__init__(name,age,sex)
    self.level=level
    self.salary=salary
  def teaching(self):
    People.talking(self)
    print('%s is teaching'%self.name)
class Student(People):
  def __init__(self,name,age,sex,group):
    People.__init__(name,age,sex)
    self.group=group
  def studying(self):
    People.talking(self)
    print('%s is studying'%self.name)

组合

class Date:
  def __init__(self,year,mon,day):
    self.year=year
    self.mon=mon
    self.day=day
  def tell_birth(self):
    print('出生于<%s>年 <%s>月 <%s>日'%(self.year,self.mon,self.day))
class Teacher:
  def __init__(self,name,age,sex,year,month,day):
    self.name=name
    self.age=age
    self.sex=sex
    self.birth=Date(year,month,day)
  def teaching(self):
    print('%s is teaching'%self.name)
class Student:
  def __init__(self,name,age,sex,year,mon,day):
    self.name=name
    self.age=age
    self.sex=sex
    self.birth=Date(year,mon,day)
  def studying(self):
    print('%s is studying'%self.name)
xiaobai=Student('xiaobai',22,'male','1995','3','16')
xiaobai.birth.tell_birth()

执行结果

出生于<1995>年 <3>月 <16>日

继承和组合

class People:
  def __init__(self,name,age,sex,year,mon,day):
    self.name=name
    self.age=age
    self.sex=sex
    self.birth=Date(year,mon,day)
  def walking(self):
    print('%s is walking ' %self.name)
  def talking(self):
    print('%s is talking '%self.name)
class Date:
  def __init__(self,year,mon,day):
    self.year=year
    self.mon=mon
    self.day=day
  def tell_birth(self):
    print('出生于<%s>年 <%s>月 <%s>日'%(self.year,self.mon,self.day))
class Teacher(People):
  def __init__(self,name,age,sex,level,salary,year,mon,day):
    People.__init__(self,name,age,sex,year,mon,day)
    self.level=level
    self.salary=salary
  def teaching(self):
    People.talking(self)
    print('%s is teaching'%self.name)
class Student(People):
  def __init__(self,name,age,sex,year,mon,day,group):
    People.__init__(self,name,age,sex,year,mon,day)
    self.group=group
  def studying(self):
    People.talking(self)
    print('%s is studying'%self.name)

父类要限制

1、子类必须有父类的方法

2、子类实现的方法必须跟父类的方法的名字一样

import abc
class File(metaclass=abc.ABCMeta):
  @abc.abstractclassmethod
  def read(self):
    pass
  @abc.abstractclassmethod
  def write(self):
    pass

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python实现批量检测HTTP服务的状态
Oct 27 Python
Python中.py文件打包成exe可执行文件详解
Mar 22 Python
Python实现的绘制三维双螺旋线图形功能示例
Jun 23 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
Jun 12 Python
python获取点击的坐标画图形的方法
Jul 09 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
Aug 24 Python
Python shelve模块实现解析
Aug 28 Python
python线程join方法原理解析
Feb 11 Python
Python如何对齐字符串
Jul 30 Python
python和node.js生成当前时间戳的示例
Sep 29 Python
在python中实现导入一个需要传参的模块
May 12 Python
Django数据库(SQlite)基本入门使用教程
Jul 07 Python
django传值给模板, 再用JS接收并进行操作的实例
May 28 #Python
Django处理文件上传File Uploads的实例
May 28 #Python
python3.4实现邮件发送功能
May 28 #Python
解决Django的request.POST获取不到内容的问题
May 28 #Python
Django后台获取前端post上传的文件方法
May 28 #Python
基于Django URL传参 FORM表单传数据 get post的用法实例
May 28 #Python
浅析Python装饰器以及装饰器模式
May 28 #Python
You might like
PHP 第一节 php简介
2012/04/28 PHP
PHP中$_FILES的使用方法及注意事项说明
2014/02/14 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
JS获取网页图片name属性的方法
2015/04/01 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
2017/11/28 Javascript
vue项目中使用ueditor的实例讲解
2018/03/05 Javascript
JS限制输入框输入的实现代码
2018/07/02 Javascript
基于Vue组件化的日期联动选择器功能的实现代码
2018/11/30 Javascript
微信小程序实现上传图片裁剪图片过程解析
2019/08/22 Javascript
原生JS封装拖动验证滑块的实现代码示例
2020/06/01 Javascript
python获取网页状态码示例
2014/03/30 Python
python中使用smtplib和email模块发送邮件实例
2014/04/22 Python
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
Python实现监控程序执行时间并将其写入日志的方法
2015/06/30 Python
对命令行模式与python交互模式介绍
2018/05/12 Python
python中对数据进行各种排序的方法
2019/07/02 Python
Python 函数list&amp;read&amp;seek详解
2019/08/28 Python
Python绘制热力图示例
2019/09/27 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
python能否java成为主流语言吗
2020/06/22 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
python基于openpyxl生成excel文件
2020/12/23 Python
Python 转移文件至云对象存储的方法
2021/02/07 Python
Python爬取酷狗MP3音频的步骤
2021/02/26 Python
不同浏览器对CSS3和HTML5的支持状况
2009/10/31 HTML / CSS
工厂厂长岗位职责
2013/11/08 职场文书
法学研究生自我鉴定范文
2013/12/04 职场文书
社区优秀志愿者材料
2014/02/02 职场文书
空中乘务员岗位职责
2014/03/08 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书