On Fri, Mar 20, 2009 at 1:24 PM, Esmail <ebo...@gmail.com> wrote: > On Mar 20, 2:41 pm, Chris Rebert <c...@rebertia.com> wrote: >> 2009/3/20 Benjamin Kaplan <bs...@case.edu>: >> > On Fri, Mar 20, 2009 at 10:06 AM, Esmail <ebo...@gmail.com> wrote: >> >> >> Hello all, >> >> >> I am curious why nested classes don't seem to be used much in Python. >> >> I see them as a great way to encapsulate related information, which is >> >> a >> >> good thing. >> >> >> In my other post "improve this newbie code/nested functions in >> >> Python?" >> >> (I accidentally referred to nested functions rather nested classes - >> >> it was late) >> >> I asked something similar in the context of a specific example where I >> >> think the >> >> use of nested classes makes sense. >> >> >> But perhaps not? >> >> > Nested classes in Python don't add much other than an additional level of >> > complexity (and an extra hash lookup). Behavior in python is usually >> > grouped >> > into modules, not into classes. The only reason to nest a class in Python >> > is >> > if the first class is going to generate the second class on the fly. >> >> Verily. See also the principle that "Flat is better than nested" from >> the Zen of Python (http://www.python.org/dev/peps/pep-0020/). > > Neat list .. thanks .. just what I'm looking for. I am trying to learn > the idioms of the language, this will help. > >> The OP would be better off naming internal classes with leading >> underscores per Python convention rather than nesting them inside >> other classes. > > So you would make them "stand-alone/external" classes but "tag" them > with the underscore to document that they are used by some other > classes > as "internal service providers"?
Yes. It's the same convention used to indicate that a method is "private" in Python, since the language itself has no privacy mechanisms. Cheers, Chris -- I have a blog: http://blog.rebertia.com -- http://mail.python.org/mailman/listinfo/python-list