网络编程
位置:首页>> 网络编程>> Python编程>> python面向对象_详谈类的继承与方法的重载

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

作者:jingxian  发布时间:2021-03-21 08:38:18 

标签:python,继承,重载,面向对象

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()
0
投稿

猜你喜欢

  • 我们可以利用windows提供的api函数来实现对系统键盘事件和鼠标事件的监听,主要利用的是SetWindowsHookEx函数,这个函数可
  • 前言:MySQL 有很多存储引擎(也叫数据引擎),所谓的存储引擎是指用于存储、处理和保护数据的核心服务。也就是存储引擎是数据库的底层软件组织
  • 为什么使用事务 当对多个表进行更新的时候,某条执行失败。为了保持数据的完整性,需要使用事务回滚。 显示设置事务  代码如下:beg
  • 有使用过VS2005开发工具的朋友或者其他语句如js中都有Try catch 语句块,那么在mysql中是否能有SQLserver的@@er
  • Notes怀疑模型梯度 * ,想打印模型 loss 对各权重的导数看看。如果如果fit来训练的话,可以用keras.callbacks.Ten
  • 前言首先图片格式转换的方法有很多,但是转二进制字节流的,我搜了一下午终于在 stackoverflow上搜到了 说一下为什么要在线转这个图片
  • 使用python实现单向循环链表,供大家参考,具体内容如下单向循环链表将所有的链接在一起,每一个节点分为数据存储区和链接区,数据区存储数据,
  • 动态变量名赋值在使用 tkinter 时需要动态生成变量,如动态生成 var1...var10 变量。使用 exec 动态赋值exec 在
  • python3中str默认为Unicode的编码格式Unicode是一32位编码格式,不适合用来传输和存储,所以必须转换成utf-8,gbk
  • 监控中,通常要使用图片更直观的看出集群的运行状况。以下是一个简单的demo,通过rrdtool生成动态的图片。Python3, tornad
  • 同MongoDB,Redis这样的NoSQL数据库的复制相比,MySQL复制显得相当复杂!概述首先主服务器把数据变化记录到主日志,然后从服务
  • 简介这里通过python的绘图工具Matplotlib包可视化实现机器学习中的KNN算法。 需要提前安装python的Numpy和Matpl
  • 打开一个Project在导航区带出多个Project将会影响PyCharm的运行速度,解决这个问题的方式只打开一个即可。有时候打开一个Pro
  • 用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽等等。而selenium给我们提供
  • Jquery中的一些东西学习一下子,补充完善一下,毕竟有些时候没有使用到这个方式很有用,在使用bootstrap table的时候,选择当前
  • 简介学习慕课课程,Flask前后端分离API后台接口的实现demo,前端可以接入小程序,暂时已经完成后台API基础架构,使用 postman
  • Mac 安装Mysql有许多开发的小伙伴,使用的是mac,那么在mac上如何安装Mysql呢?这篇文章就给大家说说。1、首先,登陆Mysql
  • 新浪天气预报代码,需要的朋友可以复制下面的代码到要显示的页面,新浪代码 :<IFRAME WIDTH='260
  • 神经网络在机器学习中有很大的应用,甚至涉及到方方面面。本文主要是简单介绍一下神经网络的基本理论概念和推算。同时也会介绍一下神经网络在数据分类
  • 最近找遍了python的各个函数发现无法直接生成随机的二维数组,其中包括random()相关的各种方法,都没有得到想要的结果。最后在一篇博客
手机版 网络编程 asp之家 www.aspxhome.com