nested classes

Chris Rebert clp2 at rebertia.com
Fri Mar 20 16:32:36 EDT 2009


On Fri, Mar 20, 2009 at 1:24 PM, Esmail <ebonak at gmail.com> wrote:
> On Mar 20, 2:41 pm, Chris Rebert <c... at rebertia.com> wrote:
>> 2009/3/20 Benjamin Kaplan <bs... at case.edu>:
>> > On Fri, Mar 20, 2009 at 10:06 AM, Esmail <ebo... at 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



More information about the Python-list mailing list