python 类的各类设计、子类扩展、变化及继承学习笔记
python 类的各类设计、子类扩展、变化及继承,边学边练,边练边记录。
print("=============类的设计=======================")
class Employee:def __init__(self,name,salary=0):self.name = nameself.salary =salarydef giveRaise(self,percent):self.salary = self.salary + (self.salary*percent)def work(self):print(self.name,"does stuff")def __repr__(self):return "<Employee:name=%s,salary=%s>"%(self.name,self.salary)class Chef(Employee):def __init__(self,name):Employee.__init__(self,name,50000)def work(self):print(self.name,"makes food")class Server(Employee):def __init__(self,name):Employee.__init__(self,name,40000)def work(self):print(self.name,"interfaces with customer")class PizzaRobot(Chef):def __init__(self,name):Chef.__init__(self,name)def work(self):print(self.name,"makes pizza")if __name__ == '__main__':bob = PizzaRobot('bob')print(bob)bob.work()bob.giveRaise(0.20)print(bob);print()for klass in Employee,Chef,Server,PizzaRobot:obj = klass(klass.__name__)obj.work()class Customer:def __init__(self,name):self.name=namedef order(self,server):print(self.name,"orders from",server)def pay(self,server):print(self.name,"pays for item to",server)class Oven:def bake(self):print("oven bakes")class PizzaShop:def __init__(self):self.server = Server('Pat')self.chef =PizzaRobot('Bob')self.oven = Oven()def order(self,name):customer = Customer(name)customer.order(self.server)self.chef.work()self.oven.bake()customer.pay(self.server)if __name__ == '__main__':scene = PizzaShop()scene.order('Homer')print('...')scene.order('Shaggy')print("=============重返流处理器=======================")
# def processor(reader,converter,writer):
# while 1:
# data = reader.read()
# if not data: break
# data = converter(data)
# writer.write(data)
#
# class Processor:
# def __init__(self,reader,writer):
# self.reader = reader
# self.wrtier = writer
# def process(self):
# while 1:
# data = self.reader.readline()
# if not data: break
# data =self.converter(data)
# self.wrtier.write(data)
# def converter(self,data):
# assert False,'converter must be defined'
#
# class Uppercase(Processor):
# def converter(self,data):
# return data.upper()
# if __name__ == '__main__':
# import sys
# obj = Uppercase(open('spam.txt'),sys.stdout)
# obj.process()print("============类的高级主题===================")
class Set:def __init__(self,value=[]):self.data = []self.contat(value)def intersect(self,other):res = []for x in other:res.append(x)return Set(res)def union(self,other):res = self.data[:]for x in other:if not x in res:res.append(x)return Set(res)def contat(self,value):for x in value:if not x in self.data:self.data.append(x)def __len__(self): return len(self.data)def __getitem__(self, key): return self.data[key]def __and__(self, other): return self.intersect(other)def __or__(self, other): return self.union(other)def __repr__(self): return 'Set:' + repr(self.data)x=Set([1,3,5,7])
print(x.union(Set([1,4,7])))
print(x | Set([1,4,6]))print("============通过子类扩展类型===================")
# class Mylist(list):
# def __getitem__(self, offset):
# print('(indexing %s at %s)' % (self,offset))
# return list.__getitem__(self,offset - 1)
#
# if __name__ == '__main__':
# print(list('abc'))
# x=Mylist('abc')
# print(x)
#
# print(x[1])
# print(x[3])
#
# x.append('spam');print(x)
# x.reverse();print(x)print("============新式类变化===================")
"""
1、类和类型合并
类现在就是类型,并且类型现在就是类。实际上,这二者基本上是同义词。type(I)内置函数返回一个实例所创建自的类,而不是一个通用的实例类型,并
且,通常是和I. class相同的。此外,类是type类的实例,type可能子类化为定制类创建,并且所有的类(以及由此所有的类型)继承自object
2、继承搜索顺序
多继承的钻石模式有一种略微不同的搜索顺序,总体而言,它们可能先横向搜索再纵向搜索,并且先宽度优先搜索,再深度优先搜索。
3、针对内置函数的属性获取
getattr_和_getattribute_方法不再针对内置运算的隐式属性获取而运行。这意味着,它们不再针对运算符重载方法名而调用,这样的名称搜索从类开
始,而不是从实例开始。
4、新的高级工具
新式类有一组新的类工具,包括slot、特性、描述符和 getattribute方法。这
些工具中的大多数都有非常特定的工具构建目的。
"""
# class C:pass
# I=C()
# type(I)
# I.__class__
# type([1,2,3])
# type(list)
# list.__class__print("============所有对象派生自object===================")
class C:pass
X=C()
type(X)
type(C)isinstance(X,object)
isinstance(C,object)type('spam')
type(str)isinstance('spam',object)
isinstance(str,object)type(type)
type(object)isinstance(type,object)
isinstance(object,type)print("============钻石继承变动===================")
class A:attr = 1
class B(A):pass
class C(A):attr = 2
class D(B,C):pass
x=D()
print(x.attr)class A(object):attr = 1
class B(A):pass
class C(A):attr = 2
class D(B,C):pass
x=D()
print(x.attr)print("============下阶段学:异常与工具===================")
python 类的各类设计、子类扩展、变化及继承学习笔记相关推荐
- Python之GUI:基于Python的GUI界面设计的一套AI课程学习(机器学习、深度学习、大数据、云计算等)推荐系统(包括语音生成、识别等前沿黑科技)
Python之GUI:基于Python的GUI界面设计的一套AI课程学习(机器学习.深度学习.大数据.云计算等)推荐系统(包括语音生成.识别等前沿黑科技) 导读 基于Python的GUI界面设计的一套 ...
- C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻
前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...
- 【Python-pywt】 小波变化库—Pywavelets 学习笔记
(转载) [Python ]小波变化库--Pywavelets 学习笔记_nanbei2463776506的博客-CSDN博客 https://blog.csdn.net/nanbei24637765 ...
- 阿里云天池 Python训练营Task3: Python基础进阶:从函数到高级魔法方法 学习笔记
本学习笔记为阿里云天池龙珠计划Python训练营的学习内容,学习链接为:https://tianchi.aliyun.com/specials/promotion/aicamppython?spm=5 ...
- ASP.NET Core分布式项目实战(业务介绍,架构设计,oAuth2,IdentityServer4)--学习笔记...
任务4:第一章计划与目录 敏捷产品开发流程 原型预览与业务介绍 整体架构设计 API 接口设计 / swagger Identity Server 4 搭建登录 账号 API 实现 配置中心 任务5: ...
- python 网页爬虫作业调度_第3次作业-MOOC学习笔记:Python网络爬虫与信息提取
1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业. 4.提供图片或网站显示的学习 ...
- python语言的33个保留字的基本含义_Python学习笔记——Python的33个保留字及其意义,python,pythone33,含义...
Python学习笔记--Python的33个保留字及其意义,python,pythone33,含义 发表时间:2020-03-27 笔记走起 正文 序号 保留字 含义 1 and 用于表达式运算,逻辑 ...
- python表单提交的两种方式_Flask框架学习笔记之表单基础介绍与表单提交方式
本文实例讲述了Flask框架学习笔记之表单基础介绍与表单提交方式.分享给大家供大家参考,具体如下: 表单介绍 表单是HTML页面中负责数据采集功能的部件.由表单标签,表单域和表单按钮组成.通过表单,将 ...
- 《Python语言程序设计》第四章(选择)学习笔记
<Python语言程序设计>学习笔记 笔记选自<Python语言程序设计>[美]梁勇 著 本篇笔记没有记录用python绘画的turtle库 第4章 选择 可以使用int函数将 ...
最新文章
- 基于android的天气预报的设计与实现
- IBM会话设置和覆盖规则
- 用eclipse生成可运行jar包、启动jar包及常见错误
- QML识别模块identifiedmodules
- 浅谈ASP.NET Forms验证
- ubuntu16.04下安装emacs
- 《零基础看得懂的C语言入门教程 》——(十一)C语言自定义函数真的很简单
- C++之运算符重载(上)
- CoreData 从入门到精通(五)CoreData 和 TableView 结合
- java类静态初始化_Java静态代码块和类初始化、实例初始化过程
- js 一个关于图片onload加载的事
- 【组成原理-处理器】数据通路
- 循环结构--while循环
- 建站百科|企业网站logo设计指南
- OpenGL和DirectX是什么?
- (ISC)2官方中国CISSP授权培训服务提供商正式启动
- MicroPython_ESP8266_IoT——第四回 初入联网(接入了贝壳物联)
- python开发工程师岗位简介_python开发工程师是什么
- jdbc驱动安装以及简单测试
- Python 爬取王者农药全套皮肤