python面向对象_详谈类的继承与方法的重载


Posted in Python onJune 07, 2017

python面向对象_详谈类的继承与方法的重载

1. 类的继承与方法的重载

python面向对象_详谈类的继承与方法的重载

python面向对象_详谈类的继承与方法的重载

上面就是先定义了一个类A,然后由定义了一个类B,B继承了类A,这样B就有了A的非私有属性和方法。

class Washer:
  company='ZBL'
  def __init__(self,water=10,scour=2):
    self._water=water #不想让用户直接访问实例变量,可以标志成私有
    self.scour=scour
    self.year=2000#这是生产日期
    #属性包装,将water属性包装成方法,用户使用water时实际是访问的方法
  @staticmethod #定义一个静态方法
  def spins_ml(spins):
    return spins*0.4
    print('company:',Washer.company)
    #print('year:',self.year)#错误,静态方法不能使用实例属性
  @classmethod
  def get_washer(cls,water,scour):#cls相当于实例方法中的self,调用是不用提供这个参数
    return cls(water,cls.spins_ml(scour))#cls代表类名Washer,故不是硬编码(改类名是不用改cls,若cls用类名代替也对,但若改类名这个地方也需要改动)
  
  @property
  def water1(self):#如果用户使用 实例.water相当于访问这个方法,而不是真的访问属性
    return self._water
  
  @water1.setter
  def water1(self,water):
    if 0<water<=500:
      self._water=water
    else:
      print('set Failure!')
  @property
  def total_year(self):
    return 2017-self.year
  
  def set_water(self,water):
    self.water=water    

  def set_scour(self,scour):
    self.scour=scour    

  def add_water(self):
    print('Add water:',self._water)

  def add_scour(self):
    print('Add scour:',self.scour)

  def start_wash(self):
    self.add_water()
    self.add_scour()
    print('Start wash...')
    
class WasherDry(Washer):# 建立一个新类,继承自Washer
  def dry(self):#新类中可以定义只属于子类的新方法
    print('Dry cloths...')
  def start_wash(self):#在子类中新定义与父类同名的方法就是方法的重载
    self.add_scour()
    self.add_water()
    
if __name__=='__main__':
##  print(Washer.spins_ml (8))
##  w=Washer()
##  print(w.spins_ml(8))
##  w=Washer(200,Washer.spins_ml(8))
##  w.start_wash()
  w=WasherDry()
  w.start_wash()
  print(w.scour,w.company)
  w.dry()

以上这篇python面向对象_详谈类的继承与方法的重载就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python通过websocket与js客户端通信示例分析
Jun 25 Python
Python的Flask框架中@app.route的用法教程
Mar 31 Python
分享Python开发中要注意的十个小贴士
Aug 30 Python
Python进阶学习之特殊方法实例详析
Dec 01 Python
python实现远程通过网络邮件控制计算机重启或关机
Feb 22 Python
python实现最长公共子序列
May 22 Python
python3利用tcp实现文件夹远程传输
Jul 28 Python
python3.5基于TCP实现文件传输
Mar 20 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 Python
tensorflow 限制显存大小的实现
Feb 03 Python
Python-jenkins模块获取jobs的执行状态操作
May 12 Python
Python类成员继承重写的实现
Sep 16 Python
windows下python连接oracle数据库
Jun 07 #Python
Python使用剪切板的方法
Jun 06 #Python
Python实现单词翻译功能
Jun 06 #Python
Python实现Smtplib发送带有各种附件的邮件实例
Jun 05 #Python
python实现的正则表达式功能入门教程【经典】
Jun 05 #Python
Python中easy_install 和 pip 的安装及使用
Jun 05 #Python
详解Python pygame安装过程笔记
Jun 05 #Python
You might like
php fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
2011/05/24 PHP
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
php使用Cookie实现和用户会话的方法
2015/01/21 PHP
Symfony页面的基本创建实例详解
2015/01/26 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
laravel orm 关联条件查询代码
2019/10/21 PHP
Javascript 构造函数 实例分析
2008/11/26 Javascript
Javascript 布尔型分析
2008/12/22 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
利用了jquery的ajax实现二级联互动菜单
2013/12/02 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
JS实现页面跳转参数不丢失的方法
2016/11/28 Javascript
jQuery Validate设置onkeyup验证的实例代码
2016/12/09 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
select标签设置默认选中的选项方法
2018/03/02 Javascript
用POSTMAN发送JSON格式的POST请求示例
2018/09/04 Javascript
基于vue.js组件实现分页效果
2018/12/29 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
Vue中点击active并第一个默认选中功能的实现
2020/02/24 Javascript
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
Django csrf 验证问题的实现
2018/10/09 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
2018/12/07 Python
使用Python 正则匹配两个特定字符之间的字符方法
2018/12/24 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
2019/12/25 Python
html5 视频播放解决方案
2016/11/06 HTML / CSS
澳大利亚正品化妆品之家:Cosmetic Capital
2017/07/03 全球购物
UNIX特点都有哪些
2016/04/05 面试题
小学教师培训方案
2014/06/09 职场文书
2014最新实习证明模板
2014/10/02 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
开学第一周值周总结
2015/07/16 职场文书
创业计划书之面包店
2019/09/12 职场文书
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android