En Thu, 24 Apr 2008 18:18:01 -0300, Brian Munroe
<[EMAIL PROTECTED]> escribió:
Ok, so thanks everyone for the helpful hints. That *was* a typo on my
part (should've been super(B...) not super(A..), but I digress)
I'm building a public API. Along with the API I have a few custom
types that I'm expecting API users to extend, if they need too. If I
don't use name mangling, isn't that considered bad practice (read not
defensive programming) to not protect those 'private' fields?
Please read this article:
<http://dirtsimple.org/2004/12/python-is-not-java.html>
You don't have to define any getXXX/setXXX methods, just use a public
attribute (if it is supposed to be public, of course). In case you have to
do something special with it (like notifying some observers when the value
changes, by example) use a property instead, and use a *single* leading
underscore in the protected attribute name. In any case, the client code
remains the same: some_object.attribute_name = value
In Python, a single leading underscore means "this is an implementation
detail, don't mess with it". This is a convention and we all -adult and
responsible programmers- follow that convention. Double leading
underscores are a means to avoid name conflicts with subclasses - don't
use them unless you have a valid reason. Double leading and trailing
underscores are __special__ names reserved by Python itself.
--
Gabriel Genellina
--
http://mail.python.org/mailman/listinfo/python-list