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有证书的加密解密实现方法
Nov 19 Python
Python中使用SAX解析xml实例
Nov 21 Python
Python线程的两种编程方式
Apr 14 Python
Python封装shell命令实例分析
May 05 Python
详谈Python2.6和Python3.0中对除法操作的异同
Apr 28 Python
python实现报表自动化详解
Nov 16 Python
python 对给定可迭代集合统计出现频率,并排序的方法
Oct 18 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 Python
pandas 对group进行聚合的例子
Dec 27 Python
python编写俄罗斯方块
Mar 13 Python
python打开音乐文件的实例方法
Jul 21 Python
学生如何注册Pycharm专业版以及pycharm的安装
Sep 24 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在字符串中查找另一个字符串
2008/11/19 PHP
PHP积分兑换接口实例
2015/02/09 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
PHP生成腾讯云COS接口需要的请求签名
2018/05/20 PHP
基于PHP实现短信验证码发送次数限制
2020/07/11 PHP
jQuery 插件 将this下的div轮番显示
2009/04/09 Javascript
28个JS验证函数收集
2010/03/02 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
webapp框架AngularUI的demo改造之路
2014/12/21 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
AngularJs Managing Service Dependencies详解
2016/09/02 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
一文读懂ES7中的javascript修饰器
2019/05/06 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
创建与框架无关的JavaScript插件
2020/12/01 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
python协程之动态添加任务的方法
2019/02/19 Python
python实现多进程按序号批量修改文件名的方法示例
2019/12/30 Python
关于HTML5你必须知道的28个新特性,新技巧以及新技术
2012/05/28 HTML / CSS
俄罗斯购买剧院和演唱会门票网站:Parter.ru
2019/11/09 全球购物
一篇.NET面试题
2014/09/29 面试题
大学毕业后的十年规划
2014/01/07 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
庆六一活动总结
2014/08/29 职场文书
优秀新员工事迹材料
2019/05/13 职场文书
2019各种承诺书范文
2019/06/24 职场文书
Python面向对象编程之类的概念
2021/11/01 Python
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL