Dunder [was Re: __init__ is the initialiser]
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Fri Jan 31 21:52:52 EST 2014
On Fri, 31 Jan 2014 20:10:46 -0500, Roy Smith wrote:
> In article <mailman.6233.1391214984.18130.python-list at python.org>,
> Ethan Furman <ethan at stoneleaf.us> wrote:
>
>> I found calling __init__ the constructor very confusing.
>
> I've heard many people say this, and it's always sort of befuddled me.
>
> In C++, a constructor is really an initializer too. By the time C++'s
> Foo::Foo() or Python's Foo.__init__() get called, memory has already
> been allocated, so I would say the object has been constructed. Yet,
> C++ people are perfectly happy calling this "thing that takes some
> allocated hunk of memory and sets its attributes to useful values" a
> constructor[1], and Python people are not.
>
> [1] Well, they really call it a ctor, but I chalk that up to the same
> sort of silliness that makes pythonistas pronounce "__" as "dunder" :-)
I see your smiley, but the comparison is ridiculous.
"Constructor" is three syllables; "ctor" isn't readily pronounceable in
English at all, rather like Cthulhu. (I can't think of any standard
English words with a "CT" in them at all, let alone at the start of the
word). The best I can come up with is "KUH TOR" or possibly "SEE TOR",
both of which are clumsy, and only save a single syllable.
On the other hand, "double leading and trailing underscore" is ten
syllables. "Dunder" is two, a significant saving, and it's a readily
pronounceable word in English (and probably Dutch). There's nothing silly
about abbreviating "double leading and trailing underscore" as dunder.
--
Steven
More information about the Python-list
mailing list