On 10/2/19 6:58 PM, DL Neil via Python-list wrote:
> On 3/10/19 12:42 AM, Dan Sommers wrote:

> Certainly, although some may have quietly given-up talking to a
> non-OOP native - and one so 'slow', I am appreciative of all
> help-given!

I also speak OO as a second language (usually kicking, screaming, and
spouting expletives, but that's my personal perspective and a separate
issue).  Hold this thought.

>> Maybe you could implement one of the proposed changes in a private
>> library function as a workaround?

> In my mind, I'm wondering if it will come to that (having 'got past'
> the original observation/issue, I'm concerned by .rename()'s silent
> errors, for example). However, that 'outside' research, eg
> StackOverflow, shows that sub-classing pathlib is problematic, and
> quite possibly not part of the design (this is repeating 'gossip' -
> I'm not going to try to justify the comment or the claim) ...

So don't subclass anything.  :-)

One non-OO option would be to write a function that takes a Path
instance and a new name, calls Path.rename, and returns a new Path
instance with the new name, something like this (untested):

    def path_rename(path, target):
        new_path = pathlib.Path(target)
        path.rename(new_path)
        return new_path

Because it returns a new Path instance rather than mutating an existing
one, you may have to re-think parts of your application that depend on a
specific Path instance being mutated.

The usual OO option that doesn't involve subclassing is Delegation, with
a capital D.  See <https://en.wikipedia.org/wiki/Delegation_pattern>,
and see Mhttps://softwareengineering.stackexchange.com/questions/381140>
for python-specific objections.

> ... That said, last night my code sub-classing Path() seemed to work
> quite happily (albeit only tested on a 'Posix' box). The yawning
> chasm/gaping jaws below, however, are that I've probably made yet
> another 'assumption' about how things 'should' work.  Run for the
> hills!

Your caution regarding an assumption is a Good Thing.  Tests, tests, and
more tests.  Document (in large, friendly lettering) that you haven't
tested in a non-Posix environment.

> This was supposed to be a simple, down-time task; a
> learning-opportunity re-factoring code to use a new (er, um, as of
> v3.4) library...

The best laid plans....  :-)
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to