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执行shell获取硬件参数写入mysql的方法
Dec 29 Python
python基础知识小结之集合
Nov 25 Python
Python程序中设置HTTP代理
Nov 06 Python
python实现简单中文词频统计示例
Nov 08 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
Jul 20 Python
Python continue继续循环用法总结
Jun 10 Python
python opencv实现运动检测
Jul 10 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
Sep 02 Python
python 模拟创建seafile 目录操作示例
Sep 26 Python
matplotlib 画双轴子图无法显示x轴的解决方法
Jul 27 Python
Python2及Python3如何实现兼容切换
Sep 01 Python
Python 实现RSA加解密文本文件
Dec 30 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 email邮箱正则
2008/10/08 PHP
一个简单的网页密码登陆php代码
2012/07/17 PHP
DOM基础及php读取xml内容操作的方法
2015/01/23 PHP
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
javascript 全等号运算符使用说明
2010/05/31 Javascript
鼠标右击事件代码(asp.net后台)
2011/01/27 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
2016/04/30 Javascript
网络传输协议(http协议)
2016/11/18 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
JS数组操作中的经典算法实例讲解
2017/07/26 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
详解使用uni-app开发微信小程序之登录模块
2019/05/09 Javascript
react 生命周期实例分析
2020/05/18 Javascript
Python对象转换为json的方法步骤
2019/04/25 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
Numpy的简单用法小结
2019/08/28 Python
python爬虫中PhantomJS加载页面的实例方法
2020/11/12 Python
amazeui树节点自动展开折叠面板并选中第一个树节点的实现
2020/08/24 HTML / CSS
南非最大的花卉和送礼服务:NetFlorist
2017/09/13 全球购物
澳大利亚在线消费电子产品商店:TobyDeals
2020/01/05 全球购物
戴森香港官方网站:Dyson香港
2021/02/11 全球购物
商务英语专业应届毕业生求职信
2013/10/28 职场文书
校友会欢迎辞
2014/01/13 职场文书
自强之星事迹材料
2014/05/12 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
巾帼志愿者活动方案
2014/08/17 职场文书
学生顶撞老师的检讨书
2014/09/17 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
2016年度创先争优活动总结
2016/04/05 职场文书
Python基础详解之描述符
2021/04/28 Python
Nginx配置之禁止指定IP访问
2022/05/02 Servers