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中关于时间和日期函数的常用计算总结(time和datatime)
Mar 08 Python
Python实现针对含中文字符串的截取功能示例
Sep 22 Python
浅谈Django自定义模板标签template_tags的用处
Dec 20 Python
将字典转换为DataFrame并进行频次统计的方法
Apr 08 Python
python3 unicode列表转换为中文的实例
Oct 26 Python
安装python及pycharm的教程图解
Oct 10 Python
python调用函数、类和文件操作简单实例总结
Nov 29 Python
Python 实现opencv所使用的图片格式与 base64 转换
Jan 09 Python
多个版本的python共存时使用pip的正确做法
Oct 26 Python
详解tensorflow之过拟合问题实战
Nov 01 Python
Python3 类型标注支持操作
Jun 02 Python
用Python实现屏幕截图详解
Jan 22 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脚本数据库功能详解(上)
2006/10/09 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
php常用字符串处理函数实例分析
2014/11/22 PHP
PHP常用设计模式之委托设计模式
2016/02/13 PHP
JS 巧妙获取剪贴板数据 Excel数据的粘贴
2009/07/09 Javascript
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
ExtJs grid行 右键菜单的两种方法
2010/06/19 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
Javascript基础教程之if条件语句
2015/01/18 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
2015/12/25 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
2017/07/23 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
js实现随机8位验证码
2020/07/24 Javascript
解决Layui 表格自适应高度的问题
2019/11/15 Javascript
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
Python结巴中文分词工具使用过程中遇到的问题及解决方法
2017/04/15 Python
Python实现的递归神经网络简单示例
2017/08/11 Python
python编程实现随机生成多个椭圆实例代码
2018/01/03 Python
Python爬虫中urllib库的进阶学习
2018/01/05 Python
Redis使用watch完成秒杀抢购功能的代码
2018/05/07 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
Python中的支持向量机SVM的使用(附实例代码)
2019/06/26 Python
软件测试工程师面试问题精选
2016/10/28 面试题
铁路工务反思材料
2014/02/07 职场文书
超市国庆节促销方案
2014/02/20 职场文书
诚信贷款承诺书
2014/05/30 职场文书
语文教育专业求职信
2014/06/28 职场文书
2015年大学生社会实践评语
2015/03/26 职场文书
2015年班组建设工作总结
2015/05/13 职场文书
杨善洲电影观后感
2015/06/04 职场文书
大学生读书笔记范文
2015/07/01 职场文书
中秋晚会致辞
2015/07/31 职场文书
给领导敬酒词
2015/08/12 职场文书
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python