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

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

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,继承,重载,面向对象
0
投稿

猜你喜欢

  • Python基于opencv实现的人脸识别(适合初学者)

    2021-10-13 19:39:29
  • Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息

    2022-08-08 04:10:31
  • Access2003:不支持这种ActiveX控件

    2010-12-09 19:59:00
  • vue上传图片组件编写代码

    2024-05-10 14:14:33
  • SQL Server获取磁盘空间使用情况

    2024-01-21 17:30:43
  • Django初步使用Celery处理耗时任务和定时任务问题

    2023-10-15 07:41:59
  • python中shell执行知识点

    2022-11-30 08:41:15
  • Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解

    2023-11-16 22:45:05
  • SQL Server 2016 配置 SA 登录教程

    2024-01-13 10:17:53
  • 浅谈redux, koa, express 中间件实现对比解析

    2024-05-02 16:28:05
  • Mysql 查询JSON结果的相关函数汇总

    2024-01-23 22:30:16
  • 教你如何使用Python下载B站视频的详细教程

    2023-04-12 00:39:48
  • bootstrap-table后端分页功能完整实例

    2024-04-29 13:11:44
  • 一个JSP页面导致的tomcat内存溢出的解决方法

    2023-06-30 04:14:41
  • python几种常用功能实现代码实例

    2023-03-11 07:10:14
  • 详解PHP的引用计数

    2023-11-14 18:00:34
  • Pytest中conftest.py的用法

    2022-08-05 03:48:32
  • Python实现115网盘自动下载的方法

    2022-08-13 21:57:33
  • python使用threading.Condition交替打印两个字符

    2022-04-13 09:01:46
  • Python中pip安装非PyPI官网第三方库的方法

    2021-01-20 15:51:18
  • asp之家 网络编程 m.aspxhome.com