class scope workarounds
Remco Gerlich
scarblac-spamtrap at pino.selwerd.nl
Tue Mar 28 14:34:42 EST 2000
Warren Postma wrote in comp.lang.python:
> class baseclass:
> x = 5 # inherited classes can override this
> def a_method(a):
Missing 'self' argument here, btw.
> classvar x # new keyword suggestion?
> return a*x
>
> Now suppose I want to inherit and change x, but lots of methods in baseclass
> reference x directly, and I want them to use the correct x for that
> base-class:
>
> class inherited(baseclass):
> x = 9
This is probably what you're looking for:
class baseclass:
x = 5
def a_method(self, a):
return a*(self.__class__.x)
class inherited(baseclass):
x = 9
x = inherited()
x.a_method(1)
Returns 9.
I bet someone is going to point out problems with implementing
something like 'classvar'.
--
Remco Gerlich, scarblac at pino.selwerd.nl
"This gubblick contains many nonsklarkish English flutzpahs, but the
overall pluggandisp can be glorked from context" (David Moser)
More information about the Python-list
mailing list