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中使用第三方模块的教程
Apr 27 Python
python获取本机mac地址和ip地址的方法
Apr 29 Python
Pandas统计重复的列里面的值方法
Jan 30 Python
python绘制已知点的坐标的直线实例
Jul 04 Python
Python3enumrate和range对比及示例详解
Jul 13 Python
使用tensorboard可视化loss和acc的实例
Jan 21 Python
python+selenium+chromedriver实现爬虫示例代码
Apr 10 Python
在CentOS7下安装Python3教程解析
Jul 09 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
Sep 23 Python
Python创建文件夹与文件的快捷方法
Dec 08 Python
将不规则的Python多维数组拉平到一维的方法实现
Jan 11 Python
关于python中模块和重载的问题
Nov 02 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短址转换实现方法
2015/02/25 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
2020/12/01 PHP
找到了一篇jQuery与Prototype并存的冲突的解决方法
2007/08/29 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
2011/10/09 Javascript
使用JQuery和CSS模拟超链接的用户单击事件的实现代码
2012/05/23 Javascript
JavaScript中实现sprintf、printf函数
2015/01/27 Javascript
JQuery的ON()方法支持的所有事件罗列
2015/02/28 Javascript
jQuery添加删除DOM元素方法详解
2016/01/18 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
2016/08/02 Javascript
基于angularJS的表单验证指令介绍
2016/10/21 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
Vue解析带html标签的字符串为dom的实例
2019/11/13 Javascript
React学习之受控组件与数据共享实例分析
2020/01/06 Javascript
es6函数之rest参数用法实例分析
2020/04/18 Javascript
用vue写一个日历
2020/11/02 Javascript
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
python 控制语句
2011/11/03 Python
Django中更改默认数据库为mysql的方法示例
2018/12/05 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
2018/12/15 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
2019/06/24 Python
Python爬虫实现vip电影下载的示例代码
2020/04/20 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
利用python进行文件操作
2020/12/04 Python
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
世界上最大的二手相机店:KEN
2017/05/17 全球购物
JAVA和C++的区别
2013/10/06 面试题
职专应届生求职信
2013/11/16 职场文书
料理师求职信
2014/01/30 职场文书
职场:企业印章管理制度(模板)
2019/10/18 职场文书
vue实现可拖拽的dialog弹框
2021/05/13 Vue.js
一篇文章弄懂Python中的内建函数
2021/08/07 Python
Python自动化实战之接口请求的实现
2022/05/30 Python