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实现字符串和日期相互转换的方法
May 13 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
Jan 02 Python
Python面向对象之继承代码详解
Jan 29 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
Jun 14 Python
机器学习之KNN算法原理及Python实现方法详解
Jul 09 Python
Python使用分布式锁的代码演示示例
Jul 30 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
Sep 04 Python
python批量从es取数据的方法(文档数超过10000)
Dec 27 Python
Python3 合并二叉树的实现
Sep 30 Python
python保留格式汇总各部门excel内容的实现思路
Jun 01 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
Jun 17 Python
如何用用Python将地址标记在地图上
Feb 07 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分页示例代码
2007/03/19 PHP
纯真IP数据库的应用 IP地址转化成十进制
2009/06/14 PHP
浅析ThinkPHP中execute和query方法的区别
2014/06/13 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
2015/01/04 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
php实现CSV文件导入和导出
2015/10/24 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
阿里云PHP SMS短信服务验证码发送方法
2017/07/11 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
AJAX架构之Dojo篇
2007/04/10 Javascript
jquery select选中的一个小问题
2009/10/11 Javascript
jquery如何获取复选框的值
2013/12/12 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
让JavaScript和其它资源并发下载的方法
2014/10/16 Javascript
js比较日期大小的方法
2015/05/12 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
2017/02/27 Javascript
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
JavaScript事件发布/订阅模式原理与用法分析
2018/08/21 Javascript
mpvue将vue项目转换为小程序
2018/09/30 Javascript
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
Python编写屏幕截图程序方法
2015/02/18 Python
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
Python GUI库PyQt5样式QSS子控件介绍
2020/02/25 Python
python实现飞机大战项目
2020/03/11 Python
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
财务会计自荐信范文
2014/02/21 职场文书
目标管理责任书
2014/04/15 职场文书
协议书模板
2014/04/23 职场文书
公司行政主管岗位职责
2015/04/09 职场文书
感恩教育主题班会
2015/08/12 职场文书
2016年教师节感言
2015/12/09 职场文书
nginx+lua单机上万并发的实现
2021/05/31 Servers