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