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 正则表达式 概述及常用字符
May 04 Python
pip 错误unused-command-line-argument-hard-error-in-future解决办法
Jun 01 Python
python web框架学习笔记
May 03 Python
python linecache 处理固定格式文本数据的方法
Jan 08 Python
Python Pandas数据中对时间的操作
Jul 30 Python
python3的url编码和解码,自定义gbk、utf-8的例子
Aug 22 Python
python opencv根据颜色进行目标检测的方法示例
Jan 15 Python
python3 简单实现组合设计模式
Jul 02 Python
使用python爬取抖音app视频的实例代码
Dec 01 Python
python中slice参数过长的处理方法及实例
Dec 15 Python
Python预测分词的实现
Jun 18 Python
opencv检测动态物体的实现
Jul 21 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-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
php对数组排序的简单实例
2013/12/25 PHP
smarty模板引擎之配置文件数据和保留数据
2015/03/30 PHP
php强制用户转向www域名的方法
2015/06/19 PHP
PHP处理数组和XML之间的互相转换
2016/06/02 PHP
php注册审核重点解析(数据访问)
2017/05/23 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
2020/09/25 PHP
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
2013/05/14 Javascript
了解Javascript的模块化开发
2015/03/02 Javascript
理解Javascript的call、apply
2015/12/16 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
webpack 样式加载的实现原理
2018/06/12 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
vue实现移动端悬浮窗效果
2018/12/01 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
2019/06/27 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
2019/10/30 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
python新手经常遇到的17个错误分析
2014/07/30 Python
python实现中文转换url编码的方法
2016/06/14 Python
解决django前后端分离csrf验证的问题
2019/02/03 Python
Django model update的多种用法介绍
2020/03/28 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
2020/09/21 Python
html5唤醒APP小记
2019/03/27 HTML / CSS
面向对象编程OOP的优点
2013/01/22 面试题
学生学习总结的自我评价
2013/10/22 职场文书
幼儿园消防演练方案
2014/02/13 职场文书
双创工作实施方案
2014/03/26 职场文书
家属慰问信
2015/02/14 职场文书
2016公务员年度考核评语
2015/12/01 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
MySQL数据库 任意ip连接方法
2022/05/20 MySQL