文学书籍

Python中的pathlib.Path为什么不继承str详解 小说绘

Python中的pathlib.Path为什么不继承str详解 小说绘

既然所有路径都可以表示为字符串,为什么不继承str这个想法的提出在可以看到,其中,还提出了将p/some/path/to/a/file返回实例的想法。 从面向对象的继承的思想来看,如果Path继承自str,那么所有的路径都应该是字符串。

但所有的路径都是字符串吗?答案是不。 在POSIX的接口中,允许二进制字符串作为路径。 也就是说路径还有的形式存在。

所以并不是所有路径都是字符串,尽管所有路径确实都能用字符串表示。

文件系统路径协议基于上述原因,Python提出了文件系统路径协议的提案,该协议提供str或bytes来表示的文件系统路径。

这个协议也就诞生了处理路径的pathlib模块,该模块遵守了路径协议并将路径视为对象。

协议的实现一般也是通过鸭子协议来满足,这点出发Path也没必要继承str。 在及以下将不能用Path作为open的参数:importpathlibp=()content=open(p,r).read()#换成open(str(p),r)可以运行将会报错:TypeError:invalidfile:PosixPath()但这点在得到的改善:内置open()函数已更新为接受对象,os和模块中的所有相关函数以及大多数其他函数和类标准库都使用了文件路径系统协议。 importpathlibwithopen(("README"))asf:...contents=()...(("some_"))(some_file,.txt)("/a/b",("c"))/a/b/c(("some_"))some_对于低版本的可以使用兼容性更好的:(r)asf:content=()。

提供的文章均由网友转载于网络,若本站转载中的文章侵犯了您的权益,请与本站管理员联系.
Copyright © 2006-2019 文学书籍_文学大全www.hy2733.com All Rights Reserved.