Yes. But, if you prefer a longer answer:
Class B inherits from class A. When implementing B's __init__ function, we may call A's init by writing:
super(B, self).__init__(arguments of A's __init__)
Is it really necessary? After all, in C++ or Java the constructor of base class is called automatically, so shouldn't it be called automatically in Python as well?
The point is that __init__ is not a constructor. Python objects are constructed with __new__. __init__ is used to initialize an object with concrete values, either defaults or passed as __init__'s parameters.
Need more details? Read Python docs at http://docs.python.org/2/reference/datamodel.html#object.__new__
I have had the rare opportunity of watching and being part of the change that the software industry has gone through throughout over 20 last years. This blog is a collection of my reflections on pursuing agility path. It includes observations and advice regarding development teams and notes on useful engineering practices. Enjoy! Piotr Górak.
Monday, May 6, 2013
Do I really have to call super(...).__init__ in Python?
We may often come across a piece of code that was written without Unit Tests at all. In addition, the piece of code may be dealing with IO l...
Google Mock provides several ways to maintain state inside mock objects. One way of implementing state maintenance is with SaveArg . Consid...
Google Mock provides a way to return newly created objects from a mock method. Suppose we have a Generator class that is supposed to ...
Can we verify that a mock object is properly destroyed? Of course! There is a couple of subtle differences between mocking regular func...
Requirements have a long history in software industry. We all have heard or read terms like: requirements definition, requirements managemen...