Lorenzo Di Gregorio wrote:
On 17 Sep., 16:54, Larry Bates <larry.ba...@we bsafe.comwrote:
>IMHO variables like what you describe are really data not program variables.
You might consider putting variables like these in a dictionary and then check
to see if the keys exist before assignment:
var_dict={}
#
# See if 'varname' initialized, if not it needs to be
#
if 'varname' not in var_dict:
var_dict[varname]=somevalue
This is a good point!
I could write something like:
instantiate('co mponent',functi on)
and have instantiate() to conditionally do:
instance['component']=Module(functio n)
Of course this means using:
instance['component'].method()
instead of just:
component.metho d()
Well, you could do that. Or you could define a class, with a __getattr__
that returns the required default value in the case where no setting had
been made.
Then you can assign components (with their own hierarchies) to the
attributes of your top-level design ...
A more annoying difficulty is with the fact that, while the scope of
ordinary variables is limited (function, package), the scope of
'component' would be global (the whole instance[]): having global
names could be pretty annoying in modeling a hierarchy. Anyway, some
scoping mechanism could be implemented over the global dictionary and
this could be a good price to pay to avoid other tricks.
Further suggestions?
It's not actually that hard to create objects that allow you to access
their attributes using *either* attribute or indexing notation.
regards
Steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC/Ltd
http://www.holdenweb.com
Skype: holdenweb
http://del.icio.us/steve.holden
Sorry, the dog ate my .sigline