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

网站建设提升医院信息化水平大连网站设计九即问仟亿科技

网站建设提升医院信息化水平,大连网站设计九即问仟亿科技,做黄金的分析师网站,创建一个公司要多少钱任务 C的基于 ostream 和操纵符(插入了这种特定的对象后,它会在 stream 中产生特定的效果)的 I/O方式,并想将此形式用在自己的Python 程序中。 解决方案 Python 允许使用对特殊方法(即名字前后带有连续两个下划线的方法)进行了重定义的类来重载原有的操作符。为了…

任务

C++的基于 ostream 和操纵符(插入了这种特定的对象后,它会在 stream 中产生特定的效果)的 I/O方式,并想将此形式用在自己的Python 程序中。

解决方案

Python 允许使用对特殊方法(即名字前后带有连续两个下划线的方法)进行了重定义的类来重载原有的操作符。为了将<<用于输出,如同在 C++中所做的一样,需要编写一个输出流类,并定义特殊方法__lshift__:

class IOManipulator(object):def __init__(self,function = None):self.function = functiondef do(self,output):self.function(output)
def do_endl(stream):stream.output.write('\n')stream.output.flush()
endl = IOManipulator(do_endl)
class OStream(object):def __init__(self,output = None):if output is None:import sysoutput = sys.stdoutself.output =outputself.format = '%s'
def __lshift__(self,thing):''' 当你使用<<操纵符并且左边操作对象是OStream时,Python会调用这个特殊方法'''if isinstance(thing,IOManipulator):thing.do(self)else:self.output.write(self.format % thing)self.format = '%s'return self
def example main():cout=OStream()cout<<"The average of "<<1<<" and "<<3<<" is "<<(1+3)/2 <<endl
#输出:The average of land 3is 2
if __name__== '__main__':example_main()

讨论

在 Python 中包装一个像文件一样的对象,模拟 C++的 ostream 的语法,还算比较容易。本节展示了怎样编写代码实现插入操作符<<的效果。解决方案中的代码实现了一个IOManipulator类(像 C++中一样)来调用插入到流中的任意函数,还实现了预定义的操纵符 endl(猜猜它得名何处)来写入新行和刷新流。

Ostream 类的实例有一个叫做 format的属性,在每次调用 self.output.write 之后,这个属性都会被设置为默认值“%s”,这样的好处是,每次创建一个操纵符之后我们可在其中临时保存流对象的格式化状态,比如:

def do_hex(stream):stream.format = '%x'
hex= IOManipulator(do_hex)
cout<<23<<'in hexis '<< hex<< 23<<',and in decimal'<<23<<endl
#输出:23 in hex is 17,and in decimal 23

些人很讨厌 C++的 cout<<something 的语法,另一些人却很喜欢。在本节的例子中所用的语法至少在可读性和简洁方面都胜过下面的语法:

print>>somewhere, "The average of &d and &d is $f\n" %(1,3,(1+3)/2)

这种方式是 Python“原生”的方式(看上去很像C的风格)。这要看你更习惯 C++还是C,至少本节给了你另一个选择。即使最终没有使用本节提供的方式,了解Python中简单的操作符重载还是蛮有趣的。

http://www.dtcms.com/a/495946.html

相关文章:

  • QML学习笔记(四十二)QML的MessageDialog
  • 国内专业网站建设公司东莞市建设规划局网站
  • [Linux系统编程——Lesson15.文件缓冲区]
  • 江苏天德建设工程有限公司网站黄冈公司网站建设平台
  • springboot中server.main.web-application-type=reactive导致的拦截器不生效
  • 1688黄页网免费网站做外贸服饰哪个个网站好
  • 杭州做企业网站公司网络营销策略应遵循的原则
  • 对“机器人VCU”进行一个详细、系统的讲解。
  • 陕西省城乡住房和建设厅网站网站建设shzanen
  • 49.字母异位词分组
  • 移动网站登录入口wordpress孕婴模板
  • 网站开发的四个高级阶段包括天津网站优化流程
  • 3.6 第一个JSON Schema(一)
  • 指针终极理解
  • 门头沟区专业网站制作网站建设wordpress登录框插件
  • 没网站做推广wordpress建站 域名
  • 企业客户管理优化方案:构建高效客户关系体系
  • 【隐语SecretFlow用户案例】亚信科技构建统一隐私计算框架探索实践
  • Win11系统安装TranslucentTB报错解决
  • 国外唯美flash个人网站欣赏资阳房产网站建设
  • 营销型企业网站怎么建站虚拟商品自动发货网站搭建教程
  • 网站文件命名规则网站做电源
  • ProE/Creo模型高效转换3DXML技术方案:在线转换工具全解析
  • 投资网站策划wordpress配置七牛
  • 吉林电商网站建设公司哪家好旅游网页制作教程
  • C#实现SQL Server→Snowflake建表语句转换工具
  • 一种面向 AIoT 定制化场景的服务架构设计方案
  • 免费做网站刮刮卡舆情查询
  • 深圳建设厅网站官网免费虚拟主机官网
  • 塑胶制造生产ERP:有哪些系统值得关注