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实现把xml或xsl转换为html格式
Apr 08 Python
在Python的Flask框架中使用模版的入门教程
Apr 20 Python
对python中raw_input()和input()的用法详解
Apr 22 Python
对python cv2批量灰度图片并保存的实例讲解
Nov 09 Python
在Python中输入一个以空格为间隔的数组方法
Nov 13 Python
PyQt5组件读取参数的实例
Jun 25 Python
python 随机生成10位数密码的实现代码
Jun 27 Python
pytorch实现对输入超过三通道的数据进行训练
Jan 15 Python
python如何实现复制目录到指定目录
Feb 13 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
Mar 13 Python
使用Python爬取弹出窗口信息的实例
Mar 14 Python
教你怎么用Python处理excel实现自动化办公
Apr 30 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
yii中widget的用法
2014/12/03 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
ImageFlow可鼠标控制图片滚动
2008/01/30 Javascript
jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
2010/03/23 Javascript
推荐20家国外的脚本下载网站
2011/04/28 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
JavaScript中transform实现数字翻页效果
2017/03/08 Javascript
node使用UEditor富文本编辑器的方法实例
2017/07/11 Javascript
微信小程序实现滴滴导航tab切换效果
2018/07/24 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
vue2路由基本用法实例分析
2020/03/06 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
Python分析学校四六级过关情况
2017/11/22 Python
python实现贪吃蛇游戏
2020/03/21 Python
利用python实现在微信群刷屏的方法
2019/02/21 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
2019/02/27 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
2020/01/06 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
2020/02/24 Python
详解用Python进行时间序列预测的7种方法
2020/03/13 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
python pandas dataframe 去重函数的具体使用
2020/07/20 Python
用python批量下载apk
2020/12/29 Python
Html5页面在微信端的分享的实现方法
2018/08/30 HTML / CSS
C#如何调用Windows程序打开一个文档
2014/12/26 面试题
高中美术教学反思
2014/01/19 职场文书
汉语言文学毕业生自荐信范文
2014/03/24 职场文书
趵突泉导游词
2015/02/03 职场文书
暑假安全保证书
2015/02/28 职场文书
西柏坡观后感
2015/06/08 职场文书
小学运动会入场口号
2015/12/24 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书
分享CSS盒子模型隐藏的几种方式
2022/02/28 HTML / CSS