Dunder [was Re: __init__ is the initialiser]
python at mrabarnett.plus.com
Sat Feb 1 04:04:11 CET 2014
On 2014-02-01 02:52, Steven D'Aprano wrote:
> 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, and Python people are not.
>>  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.
So you've never used the word "ctenoid"? How strange! :-)
(adj. - Resembling a comb; having projections like the teeth of a comb.)
> 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.
More information about the Python-list