Question about scope
Bruno Desthuilliers
bruno.42.desthuilliers at websiteburo.invalid
Thu Oct 23 12:24:12 EDT 2008
Pat a écrit :
> I have a Globals class.
Not sure it's such a great idea, but anyway... What's the use case for
this class ? There are perhaps better (or at least more idiomatic)
solutions...
> In it, I have a variable defined something like this:
>
> remote_device_enabled = bool
Could you show actual code ? It would really help. But it seems your
'Globals' class is mostly 1/ a singleton and 2/ used for application
wide settings. Is that right ?
> In one module, I assign True/False to Globals.remote_device_enabled.
Directly to the class ?
Please, once again, provide real code. Well... not necessarily your
whole code, but at least minimal working code that reproduces the problem.
> Once set, this value never changes.
>
> In another module, at the top after the imports statements, I tried this:
>
> from Globals import *
<ot>
The convention is to use lower case names for modules (and MixedCase
names for classes). This avoids confusion between synonym classes and
modules...
</ot>
> RDE = Globals.remote_device_enabled
>
> This way, I thought that I could just use 'if RDE:'
>
> Within the functions, however, I get a different value. What am I
> misunderstanding?
Not enough informations, and my crystal ball is out for repair. Sorry.
Perhaps some actual code may help ?-)
> I tried this at the top of the module (but it didn't word):
>
> global RDE
Outside a function body, the 'global' statement is a no-op. In Python,
'global' really means 'module-level', so anything defined at the module
level is already as global as it can be.
> RDE = Globals.remote_device_enabled
>
> Of course, within a function, the variable using the same two lines of
> code assigns the correct value to RDE.
Sorry Pat, but there's just not enough context for us to guess what's
wrong. It's easy enough to get it wrong with real code, so trying to
guess is just a waste of time.
More information about the Python-list
mailing list