python development practices?
Cliff Wells
logiplexsoftware at earthlink.net
Thu Nov 1 14:58:26 EST 2001
More information about the Python-list mailing list
Thu Nov 1 14:58:26 EST 2001
- Previous message (by thread): python development practices?
- Next message (by thread): python development practices?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Wednesday 31 October 2001 15:57, Chris Tavares wrote: > This scenario is precisely why the two underscore name mangling scheme was > added to python. Rewrite your example as: > > class Base: > def __init__(self, x): > self.__x = x > > def print_base_x(self): > print self.__x > > class Derived( Base ): > def __init__(self, base_x, dev_x): > Base.__init__(self, base_x) > self.__x = dev_x > > def print dev_x(self): > print self.__x > > d = Derived( 5, "hi there!" ) > > d.print_base_x() > prints 5 > > d.print_dev_x() > prints Hi There! > > So, the mechanism you're asking for is already there. Wether it's pretty or > not is a different question. But it does work, and it's implemented now. Admittedly this is true. Unfortunately, it requires double underscores on _every_ attribute you want protected (that is, when using the "black box"/every-attribute-changes-by-get/set-methods). Not only ugly, but rather non-Pythonic (IMHO). All I'm saying is it would be *nice* to have a statement specifying that all the attributes within a certain scope are private (in effect, doing the double underscore behind the scenes). Others have suggested that since you can read the source for a class you are deriving from, this is a non-issue. However, if I derive from some class (perhaps from the standard library), I don't want to be burdened with verifying that there are no collisions between the base class's attributes and any attributes I may have added in my derived class. Especially since a new version of the base class may introduce new attributes that cause the collision. Unless _every_ class distributed for public consumption has all of it's attributes prefixed with double underscores, this is bound to happen. As far as people who want to derive from a class and have access to those protected attributes, they will obviously need to read the source for the base class anyway, so really, it doesn't place any additional burden on them (except perhaps, having to make a few attributes public in the base class - not a big deal). Regards, -- Cliff Wells Software Engineer Logiplex Corporation (www.logiplex.net) (503) 978-6726 x308 (800) 735-0555 x308
- Previous message (by thread): python development practices?
- Next message (by thread): python development practices?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list