对于那些在Python中使用pathlib模块的程序员来说,你们也许会注意到一个值得探讨的问题:为什么Path对象没有继承自Python的基本字符串数据类型str?
实际上,这个问题困扰了许多Python开发者一段时间了,但是 幸运的是,这个问题的答案早已揭晓。
首先,路径要求与字符串数据类型的需求完全不同。Path对象表示文件路径,而Python的字符串数据类型是用于表示文本(或字符序列)的。这意味着如果Path对象继承了str,则可能会出现令人混淆的情况,如果Path改变了自己在字符串中的表示,可以在一些情况下改变行为。这样就可以将下面的目录视为文件:
config = Path(‘~/myproject/config/’)
with open(config + ‘settings.ini’) as f:
…
其次,一个相当实际的原因是由于str已经有了过多的方法,加入到Path对象中将会使其变得非常臃肿并且难以管理。 例如,字符串具有大量的方法,例如split(),upper(),lower(), title()等方法,如果Path对象继承了字符串类型,它就必须维护所有这些方法,并且可能需要将其中的一些方法进行覆盖或扩展,在没有必要的情况下增加代码的复杂度。
最后,这种设计可以更清晰地表达代码意图。当您看到 Path(‘/usr/bin/python’) 时,您很明显知道这是一个文件路径,而不是一个字符串。
总之,许多人可能认为将Path对象继承自字符串来增加方便性,但是对于程序员和软件设计者来说,清晰和易于维护的代码至关重要。从这个角度来看,Path不继承字符串就非常有意义了。
因此,在使用pathlib模块之前,我们应该清楚,Path对象的设计符合代码规范以及避免混淆等问题的需要,这种设计的原则如果能够得以更广泛地应用于其他领域,就能够让程序设计更加规范化,避免在项目中代码混淆的问题。
了解更多有趣的事情:https://blog.ds3783.com/