derived / base class name conflicts
Bruno Desthuilliers
bdesth.quelquechose at free.quelquepart.fr
Sat Nov 12 20:16:05 EST 2005
christopherlmarshall at yahoo.com a écrit :
> Your suggestion ('_name' -> implementation, 'name' -> API)
This is not "my" convention, it's *the* (mostly agreed upon) Python
convention. Like 'self', or CONSTANT, or a whole lot of things in Python.
> makes sense
> as a convention between programmers that know a fair amount about each
> other's classes before using them.
No need to know much. dir(modulename.ClassName) is enough.
> I don't think it is reasonable in general to only subclass from base
> classes you have studied the full API of, however.
Depends on your definition of "studying the full API" !-)
Now if your fear is to accidentally override something in the base
class, it's just a matter of:
print "API:"
print [name for name in dir(modulename.ClassName) \
if not name.startswith('_')]
print "IMPLEMENTATION:"
print [name for name in dir(modulename.ClassName) \
if not name.startswith('_')]
> The double
> underscore is a decent solution to my problem.
Possibly. It can also become a PITA. But it's you who know what your
code need !-)
> I imagine it must be used a lot in domains where people are making
> heavy use of third party python code.
I almost never used it (perhaps half-a-dozen times, and only in
frameworks abstract base classes), and rarely saw it in 3rd part source
code.
More information about the Python-list
mailing list