Re: [Python-Dev] pathlib - current status of discussions

2016年4月16日 11:50:04 -0700

> On Apr 13, 2016, at 8:31 PM, Nick Coghlan <[email protected]> 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
used.
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)
-CHB
_______________________________________________
Python-Dev mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to