Python best practice instantiating classes in app

Dave dboland9 at offilive.com
Mon Apr 29 15:36:56 EDT 2019


On 4/29/19 3:26 PM, Terry Reedy wrote:
> On 4/29/2019 1:38 PM, Dave wrote:
>> As apps get more complex we add modules, or Python files, to organize 
>> things.  One problem I have is a couple of data classes (list of 
>> dictionary objects) in a few modules that are used in a number of the 
>> other modules.  For example a list of meter reading dictionaries in 
>> one module is used by the user interface module to get the data from 
>> the user, a report module to display the data, and a file module to 
>> save and retrieve the data to/from file.  All the modules need to use 
>> the same instance of the list classes.
> 
> 
>> There are a number of ways to do this.  One is a module that creates 
>> the objects, then import that module into all of the others.  Works well, 
> 
> You can have one *or more* such modules.  Perhaps you already do.
> 
>> but may not be the best way to do the job.
> 
> In what way do you consider it unsatisfactory.

It is not that I consider it unsatisfactory as much as I'm looking for 
the best way.  I am constantly amazed at the thought that has been given 
to this language (with the exception of access modifiers - perhaps, and 
lack of a case statement), and often find that there is a better way of 
doing everything.

> 
>>
>> A slight variation is to do this in the main module, but the main 
>> module has to be imported into the others.
> 
> Avoid import loops unless really necessary.  They often work, but when 
> they don't ... its a pain.
> 
>>   Since I use the main module as a calling module to load data, start 
>> the user interface, and to close things down, it may not be the best 
>> place to also create the classes.
>>
>> Another way to do this is have a line in each module to check the 
>> name. If it is the module name, then create the class and then import 
>> these modules in all the others.  A tad messy and maybe a little 
>> confusing.
> 
> Right.
> 
> 




More information about the Python-list mailing list