diff --git a/pep-0428.txt b/pep-0428.txt index 7d9c15896..03a1ffbd5 100644 --- a/pep-0428.txt +++ b/pep-0428.txt @@ -156,8 +156,16 @@ contrasts with some other Path class proposals which were derived from if you want a path to act as a sequence, you have to lookup a dedicated attribute (the ``parts`` attribute). -Not behaving like one of the basic builtin types also minimizes the potential -for confusion if a path is combined by accident with genuine builtin types. +The key reasoning behind not inheriting from ``str`` is to prevent confusing +any object that has a string representation -- which is all Python objects -- +with a path object. This avoids situations when people must interface with an +API that mandates a string representation for a file system path, tempting you +to use ``str(path)`` to extract the string representation of the path. This +would be a problem if ``path = None; open(str(path), 'w')``. A `blog post`_ by +a Python core developer goes into more detail on the reasons behind this +specific design decision. + +.. _blog post: http://www.snarky.ca/why-pathlib-path-doesn-t-inherit-from-str Immutability