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 Web服务器Tornado使用小结
May 06 Python
从零学python系列之数据处理编程实例(一)
May 22 Python
用python 制作图片转pdf工具
Jan 30 Python
简单谈谈Python中的闭包
Nov 30 Python
对python3 中方法各种参数和返回值详解
Dec 15 Python
Python中常用的8种字符串操作方法
May 06 Python
django实现支付宝支付实例讲解
Oct 17 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
Feb 25 Python
解决Python发送Http请求时,中文乱码的问题
Apr 30 Python
Python爬虫requests库多种用法实例
May 28 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
Mar 02 Python
Python FuzzyWuzzy实现模糊匹配
Apr 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下使用无限生命期Session的方法
2007/03/16 PHP
php报表之jpgraph柱状图实例代码
2011/08/22 PHP
smarty缓存用法分析
2014/12/16 PHP
discuz目录文件资料汇总
2014/12/30 PHP
微信自定义菜单的处理开发示例
2015/04/16 PHP
fromCharCode和charCodeAt 方法
2006/12/27 Javascript
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
javascript 获取iframe里页面中元素值的方法
2014/02/17 Javascript
jquery插件corner实现圆角边框的方法
2015/03/09 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
vue2 前端搜索实现示例
2018/02/26 Javascript
详解在vue-test-utils中mock全局对象
2018/11/07 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
js实现批量删除功能
2020/08/27 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
详解template标签用法(含vue中的用法总结)
2021/01/12 Vue.js
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
python回调函数中使用多线程的方法
2017/12/25 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
2019/01/15 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
2019/08/12 Python
Python Celery多队列配置代码实例
2019/11/22 Python
Django模板标签中url使用详解(url跳转到指定页面)
2020/03/19 Python
Python多线程正确用法实例解析
2020/05/30 Python
Python模块常用四种安装方式
2020/10/20 Python
python录音并调用百度语音识别接口的示例
2020/12/01 Python
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
Ted Baker美国官网:英国时尚品牌
2018/10/29 全球购物
Haggar官网:美国男装品牌
2020/02/16 全球购物
优秀教师单行材料
2014/12/16 职场文书
2015年人民调解工作总结
2015/05/18 职场文书
五年级作文之劳动作文
2019/11/12 职场文书
总结Python常用的魔法方法
2021/05/25 Python