How do I do this without class methods ?
Alex Martelli
aleaxit at yahoo.com
Wed May 2 12:23:22 EDT 2001
"Jacek Generowicz" <jmg at ecs.soton.ac.uk> wrote in message
news:g0itjjrb6z.fsf at scumbag.ecs.soton.ac.uk...
[snip]
> OK, I've found an interesting solution to the problem: Alex'
> static-methods recipe . . . but it does seem to mess up inheritance
> somewhat, by having to replace self._class__.unit_area with the more
> explicit and specific polygon.unit_area in polygon.set_class_cache.
> Is there a way of improving on this ?
Depends on what you consider an improvement. You do have to
pass the class-object *somewhere*, either implicitly or explicitly.
> def set_class_cache ( N ):
You may change this to:
def set_class_cache(klass, N):
> # The next line had to be changed
> # self.__class__.unit_area = N * math.sin( 2 * math.pi / N )
> polygon.unit_area = N * math.sin( 2 * math.pi / N )
and therefore this to
klass.unit_area = whatever
so it becomes perfectly-inheritable,
> def set_parameter_ideal ( klass, N ):
> klass.set_class_cache( N )
And this call to
klass.set_class_cache(klass, N)
Alex
More information about the Python-list
mailing list