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 相关文章推荐
pyside写ui界面入门示例
Jan 22 Python
在windows系统中实现python3安装lxml
Mar 23 Python
详细介绍Python的鸭子类型
Sep 12 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
Sep 08 Python
Python机器学习之决策树算法实例详解
Dec 06 Python
Python面向对象之继承代码详解
Jan 29 Python
python+pandas生成指定日期和重采样的方法
Apr 11 Python
使用python来调用CAN通讯的DLL实现方法
Jul 03 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
Jul 11 Python
Python Django Cookie 简单用法解析
Aug 13 Python
Python如何计算语句执行时间
Nov 22 Python
Python如何给你的程序做性能测试
Jul 29 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计算title标题相似比的方法
2015/07/29 PHP
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
php实现socket推送技术的示例
2017/12/20 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
2018/04/20 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
禁止JQuery中的load方法装载IE缓存中文件的方法
2009/09/11 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
2013/02/07 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
jquery replace方法去空格
2017/05/08 jQuery
详解React开发必不可少的eslint配置
2018/02/05 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
[02:57]DOTA2英雄基础教程 风行者
2014/01/16 DOTA
Python字符串和文件操作常用函数分析
2015/04/08 Python
理解python正则表达式
2016/01/15 Python
详解Python迭代和迭代器
2016/03/28 Python
遗传算法python版
2018/03/19 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
Django 返回json数据的实现示例
2020/03/05 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
教师推荐信范文
2013/11/24 职场文书
工作中个人的自我评价
2013/12/31 职场文书
法院信息化建设方案
2014/05/21 职场文书
应届毕业生求职信
2014/05/26 职场文书
新品发布会策划方案
2014/06/08 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
2014年电厂个人工作总结
2014/11/27 职场文书
挂职锻炼工作总结2015
2015/05/28 职场文书
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript
MySQL8.0的WITH查询详情
2021/08/30 MySQL
服务器间如何实现文件共享
2022/05/20 Servers
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技