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实现TCP服务器端与客户端的方法详解
Apr 30 Python
Python判断字符串与大小写转换
Jun 08 Python
Python用sndhdr模块识别音频格式详解
Jan 11 Python
利用python如何处理nc数据详解
May 23 Python
Python实现图片拼接的代码
Jul 02 Python
Python 20行简单实现有道在线翻译的详解
May 15 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
Mar 14 Python
Python ADF 单位根检验 如何查看结果的实现
Jun 03 Python
python生成word合同的实例方法
Jan 12 Python
教你怎么用Python生成九宫格照片
May 20 Python
解决numpy和torch数据类型转化的问题
May 23 Python
Python爬虫框架之Scrapy中Spider的用法
Jun 28 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
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
PHP中error_log()函数的使用方法
2015/01/20 PHP
利用PHP抓取百度阅读的方法示例
2016/12/18 PHP
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
基于jquery1.4.2的仿flash超炫焦点图播放效果
2010/04/20 Javascript
JS定义回车事件(实现代码)
2013/07/08 Javascript
connect中间件session、cookie的使用方法分享
2014/06/17 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
全面解析Bootstrap弹窗的实现方法
2015/12/01 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
概述VUE2.0不可忽视的很多变化
2016/09/25 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
vue-cli3单页构建大型项目方案
2020/04/07 Javascript
完美解决通过IP地址访问VUE项目的问题
2020/07/18 Javascript
[01:01:51]EG vs VG Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
python二叉树的实现实例
2013/11/21 Python
python连接MySQL数据库实例分析
2015/05/12 Python
python下载图片实现方法(超简单)
2017/07/21 Python
对numpy中shape的深入理解
2018/06/15 Python
python制作填词游戏步骤详解
2019/05/05 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
2019/07/03 Python
python+mysql实现个人论文管理系统
2019/10/25 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
高级护理专业毕业生推荐信
2013/12/25 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
八月一日观后感
2015/06/10 职场文书
女性健康讲座主持词
2015/07/04 职场文书
Python 文本滚动播放器的实现代码
2021/04/25 Python
Python趣味挑战之给幼儿园弟弟生成1000道算术题
2021/05/28 Python
日元符号 ¥
2022/02/17 杂记