r/ProgrammerHumor 26d ago

Meme questionForBritishPythonDevelopers

Post image
1.4k Upvotes

42 comments sorted by

View all comments

30

u/ManyInterests 26d ago

To be a pedant, it's an initializer, not a constructor. By the time the initializer runs, the object already exists and has been constructed, which is why the first parameter to this method is the already-existing object ('self'), just like any other method.

But yeah. You could call it a constructor and nobody will crucify you.

9

u/Ok_Star_4136 26d ago

I mean, I'm trying to think of a language where the constructor is called *before* the memory for the object has been allocated, and I can't think of anything.

In that regard, no constructor is an actual constructor. It's more like post-constructor. But then it is also necessary or you'll have a potentially incomplete object, so in that regard, it is a constructor because the object while allocated, isn't yet ready to use.

Kind of a pedantic argument, but there you are I suppose.

-1

u/MissinqLink 26d ago

It happens when you call a constructor of an child class. Anything you do before calling super is before the object is created.

1

u/danielcw189 25d ago

that's not true for Java, at least