![constructor python constructor python](https://discuss.cloudxlab.com/uploads/default/original/1X/d4357bd8df56c28407928b75a61048be1bffd96e.png)
If the class you are writing is one of multiple bases in a multiple inheritance hierarchy, then the super()._init_() call may not go to this classes' base but possibly to an unrelated sibling class. Note that Python's flavour of multiple inheritance makes it difficult or impossible to handle "base" class constructors automatically. As the language itself won't help you, you have to use linters to check for common mistakes. The language doesn't force you to initialize your objects properly, just as it doesn't force you to only assign specific types to some variable. This kind of fits into the general Python theme of having a minimal syntax, but complex, flexible semantics. There is no special syntax for calling the base class init method, it's just the same as calling any other base class method. And Python constructors are just an ordinary initialization method (well, as ordinary as a dunder-method can be).
![constructor python constructor python](https://www.sharptutorial.com/wp-content/uploads/2019/12/constructor-in-c-768x402.png)
It has no concept of uninitialised memory. It has no concept of default constructors. classes may or may not be default constructible, which affects how explicit you need to be.failing to call the base constructor could lead to uninitialised memory, and would definitely lead to UB.This is important for C++'s memory model and data model: If the base constructor is not called explicitly, the default constructor for the base class will be called automatically. There is special syntax for calling a base class constructor: class A In C++, constructors are special operators.