A java hobbyist programmer learning python

TheFlyingDutchman zzbbaadd at aol.com
Mon Jan 26 03:04:59 CET 2009


>         If you're building an extension tree, you'll either have to supply
> layers of getter/setter methods, or hand-mangle references to attributes
> defined in the superclass.
>
>         Say you start with a "Point2D" class, and make the X, Y coordinates
> double underscore.
>
>         Now extend it to a "Point3D" class via inheritance. The 3D class
> will not be able to access (set) the X, Y values without a setter method
> defined in the parent OR by unmangling the parent names.
>
>         If you'd used the common convention of single underscore as "don't
> touch if you're an outsider", the 3D extension can be considered an
> insider and directly access the X, Y
>
>         Which would you rather read in a 3D point class derived by extending
> a 2D point?
>
>         def move(self, xmod, ymod, zmod):
>                 self._z += zmod
>                 self._y += ymod
>                 self._x += xmod
>
> or
>
>         def move(self, xmod, ymod, zmod):
>                 super(Point3D, self).move(xmod, ymod)
>                 self._z += zmod
>
> or
>
>         def move(self, xmod, ymod, zmod):
>                 self._Point2D__x += xmod
>                 self._Point2D__y += ymod
>                 self.__z += zmod
>
>         Speaking for myself, I'd prefer the first
> --
>         Wulfraed        Dennis Lee Bieber               KD6MOG
>         wlfr... at ix.netcom.com         wulfr... at bestiaria.com
>                 HTTP://wlfraed.home.netcom.com/
>         (Bestiaria Support Staff:               web-a... at bestiaria.com)
>                 HTTP://www.bestiaria.com/

I like the latter two styles, particularly the last one. That way you
can see at a glance that those member variables are defined in the
super class. But then I am a fan of Hungarian notation, which many
programmers can't stand.



More information about the Python-list mailing list