[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.

Sure, but...

> 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
> reasons,

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
handling libs.

(of course you could use composition rather than subclassing if you had to)


More information about the Python-Dev mailing list