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的垃圾回收机制
Dec 17 Python
Python中字典的setdefault()方法教程
Feb 07 Python
利用python打印出菱形、三角形以及矩形的方法实例
Aug 08 Python
基于Python和Scikit-Learn的机器学习探索
Oct 16 Python
利用python将xml文件解析成html文件的实现方法
Dec 22 Python
Python+Turtle动态绘制一棵树实例分享
Jan 16 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
在pycharm中配置Anaconda以及pip源配置详解
Sep 09 Python
Django 批量插入数据的实现方法
Jan 12 Python
python3通过udp实现组播数据的发送和接收操作
May 05 Python
python中Ansible模块的Playbook的具体使用
May 28 Python
selenium+headless chrome爬虫的实现示例
Jan 08 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+Html+缓存
2006/11/25 PHP
使用php计算排列组合的方法
2013/11/13 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
PHP获取表单所有复选框的值的方法
2014/08/28 PHP
php强制用户转向www域名的方法
2015/06/19 PHP
PHP 实现浏览记录并按日期分组
2017/05/11 PHP
javascript 学习之旅 (1)
2009/02/05 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
JS实现OCX控件的事件响应示例
2014/09/17 Javascript
Node.js 制作实时多人游戏框架
2015/01/08 Javascript
JavaScript 经典实例日常收集整理(常用经典)
2016/03/30 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
小程序双头slider选择器的实现示例
2020/03/31 Javascript
jquery轮播图插件使用方法详解
2020/07/31 jQuery
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
[03:54]Ehome出征西雅图 回顾2016国际邀请赛晋级之路
2016/08/02 DOTA
Python中的匿名函数使用简介
2015/04/27 Python
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
Python多进程与服务器并发原理及用法实例分析
2018/08/21 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
2020/01/06 Python
AmazeUI 模态窗口的实现代码
2020/08/18 HTML / CSS
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
JAVA高级程序员面试题
2013/09/06 面试题
工作决心书范文
2014/03/11 职场文书
竞聘演讲稿精彩开头和结尾
2014/05/14 职场文书
村班子对照检查材料
2014/08/18 职场文书
追讨欠款律师函
2015/06/24 职场文书
小学语文教师研修日志
2015/11/13 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
Html5生成验证码的示例代码
2021/05/10 Javascript
基于Python实现流星雨效果的绘制
2022/03/18 Python
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript