Help me pick an API design (OO vs functional)

Steven D'Aprano steve+comp.lang.python at pearwood.info
Tue Mar 26 18:37:23 EDT 2013


On Tue, 26 Mar 2013 07:33:18 -0700, Michael Herrmann wrote:

>> As long as you know the program is going to be simple, pile on the
>> globals.  But as soon as it advances, each of them is a trap to fall
>> into.
> 
> You're right with everything you say. globals are bad and it may happen
> that this will bite me.

Global *variables* are bad, not global functions. You have one global 
variable, "the current window". So long as your API makes it obvious when 
the current window changes, implicitly operating on the current window is 
no more dangerous than Python's implicit operations on the current 
namespace (e.g. "x = 2" binds 2 to x in the current namespace).

I recommend you look at the random.py API. You have a Random class, that 
allows the user to generate as many independent random number generators 
as needed. And the module also initialises a private instance, and 
exposes the methods of that instance as top-level functions, to cover the 
90% simple case where your application only cares about a single RNG.


-- 
Steven



More information about the Python-list mailing list