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在命令行下使用google翻译(带语音)
Jan 16 Python
python实现文本去重且不打乱原本顺序
Jan 26 Python
python文件的md5加密方法
Apr 06 Python
详谈python http长连接客户端
Jun 12 Python
Python守护线程用法实例
Jun 23 Python
python使用KNN算法手写体识别
Feb 01 Python
python判断一个数是否能被另一个整数整除的实例
Dec 12 Python
Pycharm设置utf-8自动显示方法
Jan 17 Python
在Python中字典根据多项规则排序的方法
Jan 21 Python
python实现两张图片拼接为一张图片并保存
Jul 16 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
Python如何把多个PDF文件合并代码实例
Feb 13 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数组的一些常见操作汇总
2011/07/17 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
2013/09/30 PHP
php中filter函数验证、过滤用户输入的数据
2014/01/13 PHP
PHP判断指定时间段的2个方法
2014/03/14 PHP
PHP邮件群发机实现代码
2016/02/16 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
2018/01/25 Javascript
收集前端面试题之url、href、src
2018/03/22 Javascript
Vue组件之高德地图地址选择功能的实例代码
2019/06/21 Javascript
layui checkbox默认选中,获取选中值,清空所有选中项的例子
2019/09/02 Javascript
javascript设计模式之装饰者模式
2020/01/30 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
2020/02/21 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
js实现3D旋转相册
2020/08/02 Javascript
python机器学习之决策树分类详解
2017/12/20 Python
python3如何将docx转换成pdf文件
2018/03/23 Python
matplotlib实现区域颜色填充
2019/03/18 Python
python使用opencv实现马赛克效果示例
2019/09/28 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
将python字符串转化成长表达式的函数eval实例
2020/05/11 Python
HTML5页面无缝闪开的问题及解决方案
2020/06/11 HTML / CSS
Manuka Doctor英国官网:真正的麦卢卡蜂蜜和护肤品
2018/10/26 全球购物
介绍下Lucene建立索引的过程
2016/03/02 面试题
毕业生的求职信范文分享
2013/12/04 职场文书
春节晚会主持词
2014/03/24 职场文书
理发店策划方案
2014/06/05 职场文书
节约能源标语
2014/06/17 职场文书
岗位工作说明书
2014/07/29 职场文书
运动会演讲稿50字
2014/08/25 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
故意伤害辩护词
2015/05/21 职场文书
Python中Cookies导出某站用户数据的方法
2021/05/17 Python
Pygame Rect区域位置的使用(图文)
2021/11/17 Python
MySQL提升大量数据查询效率的优化神器
2022/07/07 MySQL