"configuring" a class
Terry Hancock
hancock at anansispaceworks.com
Wed Feb 22 22:31:08 EST 2006
On 22 Feb 2006 17:28:35 -0800
"Russ" <uymqlp502 at sneakemail.com> wrote:
> I would like to let the user of one of my classes
> "configure" it by activating or de-activating a particular
> behavior (for all instances of the class).
> One way to do this, I figured, is to have a static class
> variable, along with a method to set the variable.
> However, I am stumped as to how to do that in python.
> Suggestions welcome.
Like this?
>>> class Switchable(object):
... def _plus(self, val):
... return val
... def _minus(self, val):
... return -val
... switch = _plus
... def sense(self, value):
... return self.switch(value)
...
>>> a = Switchable()
>>> b = Switchable()
>>> a.sense(2)
2
>>> b.sense(3)
3
>>> Switchable.switch = Switchable._minus
>>> a.sense(3)
-3
>>> b.sense(2)
-2
Seems to work. Might be more elegant to do that
switch with a method of Switchable. Maybe:
def flipswitch(self, num):
if num == 1:
self.switch = self._plus
else:
self.switch = self._minus
Then you'd switch with, e.g.:
Switchable.flipswitch(1)
> The next best thing, I figure, is to just use a global
> variable. Several "methods" of the class then check the
> value of the global variable to determine what to do. The
> user can then just set the variable to get the desired
> behavior.
Ick.
> However, I tried this and it does not seem to work. I
> imported the class, then set the global variable. But the
> new value of the variable somehow did not get back into
> the class methods that need to see it.
Undoubtedly you shadowed it somehow, but without seeing
the code, I can't guess how.
> Can anyone give me a clue about this? If there is a better
> way, please let me know. Thanks.
Recommend you stick with the first idea, which
as you see works fine.
Cheers,
Terry
--
Terry Hancock (hancock at AnansiSpaceworks.com)
Anansi Spaceworks http://www.AnansiSpaceworks.com
More information about the Python-list
mailing list