On 19Aug2017 11:00, boB Stepp <robertvst...@gmail.com> wrote:
On Sat, Aug 19, 2017 at 4:04 AM, Peter Otten <__pete...@web.de> wrote:
[...]
The lesson is that Python already provides some powerful ready-to-use
classes that take you a long way without having to write your own custom
classes.

In my beginning experiments to date writing classes, I have often
while writing my toy examples realized, "Why am I writing a class?
Python already does this more straightforwardly with <insert Python
featured code here>."  Of course not knowing all of Python I sometimes
don't realize this until well after I wrote the unneeded class.

Personally, I do this a lot. It does cost some time, but it also has advantages. You get to explore the problem space from the point of view of your own needs, and you get insight into the costs/benefits of various ways of doing things.

Then you can come back to the presupplied library do various things: understand why its interfaces may be designed the way they were, refactor your code (the larger problem) on top of the presupplied library, and sometimes decide that the presupplied library doesn't meet your needs (or meets them poorly), and then you have this useful additional library of your own.

The flipside is to do a little research and start with the presupplied library and take that as far as it will go, then build on that. Particularly when the library solves some problem you find boring. Also, the presupplied library often covers corner cases you may miss - it has (probablym hopefully) been well debugged - writing your own has that cost.

You get less insight into internals, but you also get off the ground faster.

Another alternative to (explicit) classes are generators which are an
elegant way to hold state and provide a simple interface.
[...]
I hope I don't forget this point between now and when I get the
database part of my project going!

One thing that I think can be important is to code the upper layers in the terms of your larger problem, not in terms of the lower level library's interface. In between the two will be functions or methods of your own whose interfaces are your own operation, and which call the library to accomplish the task, providing some separation between a natural expression of your upper level problem and what you might write if you were building from the bottom and thinking in the library's terms.

Cheers,
Cameron Simpson <c...@cskk.id.au> (formerly c...@zip.com.au)

Ride to not crash. Dress to crash. Live to ride to not crash again.
- Lawrence Smith, DoD#i, lawre...@msc.cornell.edu
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to