[Python-Dev] pathlib - current status of discussions
Chris Barker - NOAA Federal
chris.barker at noaa.gov
Sat Apr 16 14:47:26 EDT 2016
> On Apr 13, 2016, at 8:31 PM, Nick Coghlan <ncoghlan at gmail.com> wrote:
>>> class Special(bytes):
>>> def __fspath__(self):
>>> return 'str-val'
>>> obj = Special('bytes-val', 'utf8')
>>> path_obj = fspath(obj, allow_bytes=True)
>>> With #2, path_obj == 'bytes-val'. With #3, path_obj == 'str-val'.
> In this kind of case, inheritance tends to trump protocol.
> example, int subclasses can't override operator.index:
> The reasons for that behaviour are more pragmatic than philosophical:
> builtins and their subclasses are extensively special-cased for speed
OK, but in this case, purity can beat practicality. If the author
writes an __fspath__ method, presumably it's because it should be
And I can certainly imagine one might want to store a path
representation as bytes, but NOT want the raw bytes passed off to file
(of course you could use composition rather than subclassing if you had to)
More information about the Python-Dev