On Tue, 2010-10-26, Carl Banks wrote: > On Oct 25, 11:20 pm, Jorgen Grahn <grahn+n...@snipabacken.se> wrote: >> On Mon, 2010-10-25, bruno.desthuilli...@gmail.com wrote: >> > On 25 oct, 15:34, Alex Willmer <a...@moreati.org.uk> wrote: >> >> On Oct 25, 11:07 am, kj <no.em...@please.post> wrote: >> >> >> > In "The Zen of Python", one of the "maxims" is "flat is better than >> >> > nested"? Why? Can anyone give me a concrete example that illustrates >> >> > this point? >> >> >> I take this as a reference to the layout of the Python standard >> >> library and other packages i.e. it's better to have a module hierarchy >> >> of depth 1 or 2 and many top level items, than a depth of 5+ and only >> >> a few top level items. >> >> > (snip) >> >> > This also applies to inheritance hierarchies (which tend to be rather >> > flat in Python compared to most mainstreams OOPLs), as well as nested >> > classes etc. >> >> Which mainstream languages are you thinking of? Java? Because C++ is >> as flat as Python. > > Not in my experience. The only way to get dynamic polymorphism (as > opposed to the static polymorphism you get with templates) in C++ is > to use inheritance, so when you have a class library in C++ you tend > to get hierarchies where classes with all kinds of abstract base > classes so that types can be polymorphic.
I should have mentioned that I talked about the standard C++ library: almost no inheritance[1] and just one namespace level. Of course you can make a layered mess of C++ if you really try[2], but it's not something the language encourages. IMHO. > In Python you don't need > abstract base classes so libraries tend to be flatter, only inheriting > when behavior is shared. > > However it's not really that big of a difference. Right, that's one level, and you can't avoid it if you really *do* need inheritance. /Jorgen [1] Not counting the black sheep, iostreams. [2] I have seen serious C++ code trying to mimic the Java bottomless namespace pit of despair: com::company::division::product::subsystem::... -- // Jorgen Grahn <grahn@ Oo o. . . \X/ snipabacken.se> O o . -- http://mail.python.org/mailman/listinfo/python-list