On 12 October 2012 20:39, Georg Brandl <g.brandl@gmx.net> wrote:
Am 12.10.2012 18:27, schrieb Ethan Furman:
> Georg Brandl wrote:
>> Am 12.10.2012 14:45, schrieb Blake Hyde:
>>> I'm a Python developer rather than a developer of Python, but I'd like to ask a
>>> question about this option (and implicitly vote against it, I suppose); if you
>>> specialize a method name, such as .pathjoin, aren't you implying that methods
>>> must be unambiguous even across types and classes?  This seems negative.  Even
>>> if .join is already used for strings, it also makes sense for this use case.
>>
>> Of course different classes can have methods of the same name.
>>
>> The issue here is that due to the similarity (and interchangeability) of path
>> objects and strings it is likely that people get them mixed up every now and
>> then, and if .join() works on both objects the failure mode (strange result
>> from str.join when you expected path.join) is horribly confusing.
>
> I don't understand the "horribly confusing" part.  Sure, when I got them
> mixed up and ended up with a plain ol' string instead of a really cool
> Path it took a moment to figure out where I had made the error, but the
> traceback of "AttributeError: 'str' object has no attribute 'path'" left
> absolutely no room for confusion as to what the problem was.

"no attribute 'path'"?  Not sure where that exception comes from.
This is what I meant:

>>> p = Path('/usr')
>>> p.join('lib')
Path('/usr/lib')

>>> p = '/usr'
>>> p.join('lib')
'l/usri/usrb'

I don't know about you, but I found that so horribly confusing I had to check the output. I'm just not used to thinking of str.join(str) as sensible, and I could not for the life of me see where the output 'l/usri/usrb' came from. Where was "lib"?

I might just have been an idiot for a minute, but it'll just get harder in real code. And I'm not the worst for stupid mistakes: we wan't newbies to be able (and want) to use the built in path modules. When they come back wondering why 
homepath.join("joshua").join(".config")
returned
'.j/homeo/homes/homeh/homeu/homeacj/homeo/homes/homeh/homeu/homeaoj/homeo/homes/homeh/homeu/homeanj/homeo/homes/homeh/homeu/homeafj/homeo/homes/homeh/homeu/homeaij/homeo/homes/homeh/homeu/homeag'
we are going to have a problem.

So I agree with you [Georg Brandl] here. I would even rather .pathjoin/.joinpath than .join despite the utterly painful name*.

* As others have stated, if you like it why not .strjoin and .dictupdate and .listappend?