用途:包装一个类文件对象,统计其读取和写入的字节数与调用次数,常用于实现 IO 包装器、跟踪文件访问或计量通过代理的读写流量。
主要能力与规则:将被包装对象保存为 self._wrapped;实现 read(size=-1) 时委托给 self._wrapped.read(size),并按返回字节的长度累加计数,而非请求的 size;write 时按返回值累加 nwrites,若被包装的 write 返回 None 则按 len(data) 累加;以属性或特性暴露 read_bytes/nreads 与 write_bytes/nwrites;enter 返回 self,exit 调用 self._wrapped.exit(或 close())并转发异常信息;始终实现普通方法 close() 以支持非上下文管理器用法;绝不统计请求字节,只统计实际返回或写入的字节。
使用方式:按上述规则实现包装类,例如 MetaRead 在 init 中保存 wrapped 并初始化 nreads,在 read 中委托并累加 len(data)。
限制与边界:若测试使用线程,需用 threading.Lock 包裹计数更新以保证线程安全。资料未提供安装命令、平台、收费或价格信息。