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 tempfile模块学习笔记(临时文件)
May 25 Python
Python中optparse模块使用浅析
Jan 01 Python
详解Python的Django框架中的中间件
Jul 24 Python
浅谈python和C语言混编的几种方式(推荐)
Sep 27 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
Mar 30 Python
python3+dlib实现人脸识别和情绪分析
Apr 21 Python
在IPython中进行Python程序执行时间的测量方法
Nov 01 Python
numpy np.newaxis 的实用分享
Nov 30 Python
Python3打包exe代码2种方法实例解析
Feb 17 Python
弄清Pytorch显存的分配机制
Dec 10 Python
粗暴解决CUDA out of memory的问题
May 22 Python
浅谈哪个Python库才最适合做数据可视化
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
PHP详细彻底学习Smarty
2008/03/27 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
2013/06/17 PHP
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
php动态生成版权所有信息的方法
2015/03/24 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
PHP与Perl之间知识点区别整理
2019/03/19 PHP
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
基于jquery的时间段实现代码
2012/08/02 Javascript
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
深入解析JavaScript中的变量作用域
2013/12/06 Javascript
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
jQuery事件绑定on()与弹窗实现代码
2016/04/28 Javascript
JS集成fckeditor及判断内容是否为空的方法
2016/05/27 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
[01:33:30]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第二场 2月5日
2021/03/11 DOTA
python 正则式使用心得
2009/05/07 Python
python抓取豆瓣图片并自动保存示例学习
2014/01/10 Python
Python基于pygame实现图片代替鼠标移动效果
2015/11/11 Python
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
Python字符编码与函数的基本使用方法
2017/09/30 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
python如何爬取网站数据并进行数据可视化
2019/07/08 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
Calphalon美国官网:美国顶级锅具品牌
2020/02/05 全球购物
工程类专业自荐信范文
2014/03/09 职场文书
教师党员个人总结
2015/02/10 职场文书
出生证明范本
2015/06/15 职场文书
运动会宣传稿100字
2015/07/23 职场文书
Golang: 内建容器的用法
2021/05/05 Golang
JavaScript实现简单的音乐播放器
2022/08/14 Javascript