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写的英文字符大小写转换代码示例
Mar 06 Python
Python删除windows垃圾文件的方法
Jul 14 Python
Python数据分析之双色球中蓝红球分析统计示例
Feb 03 Python
pandas实现选取特定索引的行
Apr 20 Python
tensorflow实现简单逻辑回归
Sep 07 Python
linux安装python修改默认python版本方法
Mar 31 Python
对Python 简单串口收发GUI界面的实例详解
Jun 12 Python
解决pycharm remote deployment 配置的问题
Jun 27 Python
python装饰器练习题及答案
Nov 01 Python
Django后台管理系统的图文使用教学
Jan 20 Python
Python实现GIF图倒放
Jul 16 Python
Python 如何解决稀疏矩阵运算
May 26 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
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
理解JAVASCRIPT中hasOwnProperty()的作用
2013/06/05 Javascript
js Date概念详细介绍
2013/11/22 Javascript
js实现日期级联效果
2014/01/23 Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
2014/02/23 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
JS中验证整数和小数的正则表达式
2018/10/08 Javascript
vue 弹出遮罩层样式实例
2020/07/22 Javascript
python字符串编码识别模块chardet简单应用
2015/06/15 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
python+pyqt实现右下角弹出框
2017/10/26 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
Matplotlib中文乱码的3种解决方案
2018/11/15 Python
Python3内置函数chr和ord实现进制转换
2020/06/05 Python
python基本算法之实现归并排序(Merge sort)
2020/09/01 Python
中式餐厅创业计划书范文
2014/01/23 职场文书
建筑工地标语
2014/06/18 职场文书
干部作风建设工作总结
2014/10/29 职场文书
保证金退回承诺函格式
2015/01/21 职场文书
清洁工岗位职责
2015/02/13 职场文书
法院个人总结
2015/03/03 职场文书
应届生简历自我评价
2015/03/11 职场文书
2015年百日安全活动总结
2015/03/26 职场文书
党小组意见范文
2015/06/08 职场文书
vue3中的组件间通信
2021/03/31 Vue.js
自定义函数实现单词排序并运用于PostgreSQL(实现代码)
2021/04/22 PostgreSQL
七个非常实用的Python工具包总结
2021/06/15 Python
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python
搞笑Gif:这么白这么长的腿像极了一楼的女朋友
2022/03/21 杂记
Python如何让字典保持有序排列
2022/04/29 Python
springboot为异步任务规划自定义线程池的实现
2022/06/14 Java/Android