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中super()函数简介及用法分享
Jul 11 Python
tensorflow 1.0用CNN进行图像分类
Apr 15 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
Jun 13 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
Jun 26 Python
实例介绍Python中整型
Feb 11 Python
利用Python库Scapy解析pcap文件的方法
Jul 23 Python
Python matplotlib可视化实例解析
Jun 01 Python
python3.x中安装web.py步骤方法
Jun 23 Python
Python 如何创建一个简单的REST接口
Jul 30 Python
Python 打印自己设计的字体的实例讲解
Jan 04 Python
Python实现DBSCAN聚类算法并样例测试
Jun 22 Python
python神经网络学习 使用Keras进行回归运算
May 04 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删除数组中空值的方法介绍
2014/04/14 PHP
PHP常见错误提示含义解释(实用!值得收藏)
2016/04/25 PHP
ucenter中词语过滤原理分析
2016/07/13 PHP
Yii2中cookie用法示例分析
2016/07/18 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
关于IFRAME 自适应高度的研究
2006/07/20 Javascript
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
2012/05/11 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
2013/11/26 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
一个js过滤空格的小函数
2014/10/10 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
2014/11/08 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
使用Node.js处理前端代码文件的编码问题
2016/02/16 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
Javascript中的async awai的用法
2017/05/17 Javascript
Vue中的slot使用插槽分发内容的方法
2018/03/01 Javascript
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
详解vue中v-model和v-bind绑定数据的异同
2020/08/10 Javascript
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
2016/06/13 Python
python爬虫获取京东手机图片的图文教程
2017/12/29 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
校园标语大全
2014/06/19 职场文书
税务职业生涯规划书范文
2014/09/16 职场文书
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
通知的写法
2015/04/23 职场文书
法制工作总结2015
2015/07/23 职场文书
签约仪式致辞
2015/07/30 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
golang 在windows中设置环境变量的操作
2021/04/29 Golang
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript