Class or Dictionary?

Dave Angel davea at ieee.org
Mon Feb 14 03:30:17 EST 2011


On 01/-10/-28163 02:59 PM, Martin De Kauwe wrote:
> On Feb 14, 12:02 pm, Terry Reedy<tjre... at udel.edu>  wrote:
>>
>>  <snip>
>
> Cool! Thanks this seems straight forward, however if I do it this way
> then once I change it (i.e. after reading user param file) I can't
> pass the changed version to another module can i? Or am I being
> stupid? Unless I do it my way I think
>
> import cons
>>>> print cons.kg_as_g
>>>> 1000.0
>>>> cons.kg_as_g =3.4
>>>> print cons.kg_as_g
>
> is fine.
>
> But if I call import cons in another module it would be back to 1000.
> right? Whereas if I do it as a class I can pass the adjusted instance?
> E.g.
>
> from constants import Constants
> c =onstants()
>
> I can then change "c" and pass this around?
>
> Apologies if I have got that totally wrong!
>

Yep, you've got it totally wrong.  As long as your import is the kind 
you show here, changes are persistent.  Other modules that import cons 
will get the one you modified, not re-execute the source.

If you had tried something like  from cons import kg
then you'd have a separate local binding.   So don't do that.

DaveA



More information about the Python-list mailing list