当前位置: 首页 > news >正文

手机看电影的网站建设友情链接交换平台

手机看电影的网站建设,友情链接交换平台,b2b业务,山西做杂粮的网站1 python通过继承、组合、委托组织类 #概念描述1继承属性查找X.name2多态方法调用X.method,取决于X的类型3封装方法和运算符实现行为 通常来说,独特的运算使用独特的方法名称,不要依赖于调用标记。 python组织类结构的方式包括&#xff1a…

1 python通过继承、组合、委托组织类

#概念描述
1继承属性查找X.name
2多态方法调用X.method,取决于X的类型
3封装方法和运算符实现行为

通常来说,独特的运算使用独特的方法名称,不要依赖于调用标记。

python组织类结构的方式包括:继承、组合、委托。

1.1 继承:是一个关系

python的继承通过点号运算触发,比如X.name,在实例、类、超类中搜索属性。

#概念描述
1超类、基类、父类被继承的类
2派生类、子类继承的类
3派生父类向子类看
4继承子类项父类看

子类继承父类,子类和父类为“是一个(is-a)”关系,子类是父类的一种,子类是一个更具体,更全面的父类。

比如:员工是父类,清洁和扫地机器人工是子类,扫地机器人是清洁工,清洁工是一个员工。

示例

class Staff:#员工def __init__(self,name,salary=0):self.name=nameself.salary=salarydef payRaise(self,percent):self.salary=self.salary*(1+percent)def work(self):#干一些事情print(self.name,'does stuff')def __repr__(self):return '<Staff:name={},salary={}>'.format(self.name,self.salary)class Cleaner(Staff):#保洁员def __init__(self,name):Staff.__init__(self,name,3000)def work(self):#打扫客房print(self.name,'cleaning guest rooms')class Waiter(Staff):#前台服务员def __init__(self,name):Staff.__init__(self,name,5000)def work(self):#接待顾客print(self.name,'Receiving customers')class SweepRobot(Cleaner):#扫地机器人def __init__(self,name):Staff.__init__(self,name,2000)def work(self):#打扫大堂print(self.name,'cleaning the lobby')if __name__=='__main__':srb1=SweepRobot('robot1')print(srb1)srb1.work()srb1.payRaise(0.1)print(srb1);print()for klass in Staff,Cleaner,Waiter,SweepRobot:obj = klass(klass.__name__)obj.work()'''E:\documents\F盘>python staffs.py
<Staff:name=robot1,salary=2000>
robot1 cleaning the lobby
<Staff:name=robot1,salary=2200.0>Staff does stuff
Cleaner cleaning the office
Waiter Receiving customers
SweepRobot cleaning the lobby
'''

1.2 组合:有一个关系

python的组合类通过内嵌其他类的对象来实现自己的接口。

组合类有一个或多个内嵌类(组件类)的对象作为自己的属性。

组合类和内嵌类为“有一个(has a)”关系。

比如,酒店类(Hotel)有前台服务员(Waiter)和保洁员(Cleaner)两个类对象作为属性,实现酒店的退房操作。

from staffs import Waiter,Cleanerclass Customer:def __init__(self,name,roomNo):self.name=nameself.roomNo=roomNodef checkOut(self,waiter):#退房print(self.name,'退房,房号为',self.roomNo)def backCard(self,waiter):#归还房卡print(self.name,'归还房卡给',waiter.name)class Hotel:def __init__(self):#Hotel有 Waiter 和 Cleaner 类的对象self.waiter1 = Waiter('前台1号')self.cleaner1=Cleaner('保洁员1号')def checkOut(self,name,roomNo):#退房流程cust1=Customer(name,roomNo)cust1.checkOut(self.waiter1)cust1.backCard(self.waiter1)self.cleaner1.work()if __name__ == '__main__':hot1=Hotel()hot1.checkOut('顾客1号','168')
'''E:\documents\F盘>python hotel.py
顾客1号 退房,房号为 168
顾客1号 归还房卡给 前台1号
保洁员1号 cleaning guest rooms
'''

1.3 继承组合例子

Processor内嵌reader和writer实例对象,为组合类,并且定义子类继承必须实现的方法converter,为转换器。

streams.py

from abc import ABCMeta,abstractmethod
class Processor:def __init__(self,reader,writer):#组合类self.reader=reader#读取器实例self.writer=writer#写入器实例def process(self):while 1:data=self.reader.readline()if not data:breakdata=self.converter(data)self.writer.write(data)@abstractmethoddef converter(self,data):#继承,子类实现转换器pass

converters.py

from streams import Processorclass Uppercase(Processor):def converter(self,data):#实现抽象超类的方法return data.upper()
class HTMLize:def write(self,line):print('<UP>{}</UP>'.format(line.rstrip()))
if __name__ == '__main__':sep='---------------'import sysprint('查看 tyxt.txt内容:\n{}'.format(open('tyxt.txt').read()))print(sep)Uppercase(open('tyxt.txt'),sys.stdout).process()print()print(sep)Uppercase(open('tyxt.txt'),open('tyxtup.txt','w')).process()print('查看 tyxtup.txt内容:\n{}'.format(open('tyxtup.txt').read()))print(sep)Uppercase(open('tyxt.txt'),HTMLize()).process()'''
E:\documents\F盘>python converters.py
查看 tyxt.txt内容:
tyxt.work
bbs.tyxt.work
---------------
TYXT.WORK
BBS.TYXT.WORK
---------------
查看 tyxtup.txt内容:
TYXT.WORK
BBS.TYXT.WORK
---------------
<UP>TYXT.WORK</UP>
<UP>BBS.TYXT.WORK</UP>
'''

1.4 委托:包装对象

用法

在__init__(self,obj)方法中传入被委托对象(obj),并且赋值给包装类的属性。

在__getattr__(self,attrname)方法,拦截被委托对象的点号运算,返回属性。

示例

class MyWrapper:def __init__(self,obj):#传入被委托对象,赋值给包装类的属性self.wrapped=objdef __getattr__(self,attrname):#拦截点号运算print('trace:',attrname)#返回被委托对象属性return getattr(self.wrapped,attrname)
if __name__ == '__main__':mwL=MyWrapper([1,2,3])mwL.append('梯阅线条')print(mwL.wrapped)
'''E:\documents\F盘>python trace.py
trace: append
[1, 2, 3, '梯阅线条']
'''
http://www.hkea.cn/news/136269/

相关文章:

  • 做淘客网站用备案网络营销计划书怎么写
  • 网站 公安 备案深圳百度推广客服电话多少
  • 北京米兰广告设计有限公司广州优化疫情防控举措
  • 汕头个人建站模板网站推广计划方法
  • php企业网站无限制源码网络营销方案设计
  • 动漫网站开发与建设百度网盘网页版入口官网
  • 咸阳做网站长沙网络营销外包哪家好
  • 专门做私人定制旅游的网站搜索引擎营销方法
  • 注册安全工程师管理系统网奇seo赚钱培训
  • 武汉市住房和城乡建设厅官方网站生猪价格今日猪价
  • 住房和城乡建设部网站诚信评价搜索引擎优化人员优化
  • 网站制作 太原网络营销专业课程
  • 做网站去哪个公司网络营销策划书的结构
  • 个人无网站怎样做cps广告深圳全网推广公司
  • 中国人可以做的c2c网站上海网站排名推广
  • 网站建设目标定位公司员工培训方案
  • 美工培训班学百度自然搜索排名优化
  • 网站建设自学多长时间搜索引擎营销的过程
  • 做cpa的网站源码seo的外链平台有哪些
  • 那个网站做外贸最好成都网站建设方案外包
  • 企业网站建设效益分析联合早报 即时消息
  • html5网页成品代码自媒体seo优化
  • 门户网站建设招投标网络seo啥意思
  • 游戏币销售网站建设百度热搜seo
  • 线上投票链接怎么做厦门搜索引擎优化
  • 网页设计课程主要内容seo学校
  • php 深圳 电子商务网站开发seo优化好做吗
  • 网站建设开发技术天津济南网站设计
  • 信息公开网站建设网店推广分为哪几种类型
  • 南皮网站建设价格seo搜索引擎优化方式