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使用plotly绘制数据图表的方法
Jul 18 Python
python+pyqt实现12306图片验证效果
Oct 25 Python
python实现最长公共子序列
May 22 Python
python实现换位加密算法的示例
Oct 14 Python
python将.ppm格式图片转换成.jpg格式文件的方法
Oct 27 Python
对pandas处理json数据的方法详解
Feb 08 Python
python实现批量处理将图片粘贴到另一张图片上并保存
Dec 12 Python
关于Python中定制类的比较运算实例
Dec 19 Python
python实现超级马里奥
Mar 18 Python
python的reverse函数翻转结果为None的问题
May 11 Python
Python自省及反射原理实例详解
Jul 06 Python
python实现会员信息管理系统(List)
Mar 18 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获取数组中某元素的位置及array_keys函数应用
2013/01/29 PHP
解析php防止form重复提交的方法
2013/07/01 PHP
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
php简单实现多字节字符串翻转的方法
2015/03/31 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
Javascript 构造函数 实例分析
2008/11/26 Javascript
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
2015/11/17 Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
2015/11/21 Javascript
详解vue-cli 构建Vue项目遇到的坑
2017/08/30 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
2019/01/18 jQuery
微信小程序的授权实现过程解析
2019/08/02 Javascript
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
使用pandas读取csv文件的指定列方法
2018/04/21 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
2019/10/23 Python
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
求职自荐书范文
2013/12/04 职场文书
大学生校园创业计划书
2014/02/08 职场文书
食品业务员岗位职责
2014/03/18 职场文书
委托书范文
2014/04/02 职场文书
服务之星事迹材料
2014/05/03 职场文书
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
2015年教师新年寄语
2014/12/08 职场文书
2015年助残日活动总结
2015/03/27 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
二婚主持词
2015/06/30 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
2019交通安全宣传标语集锦!
2019/06/28 职场文书
mongodb的安装和开机自启动详细讲解
2021/08/02 MongoDB
Python 视频画质增强
2022/04/28 Python