Defining an instance attribute outside
__init__ affects the readability of code. It is expected to find all the attributes an instance may have by reading its
__init__ method. If there is a need to initialize attribute via sub-initialization methods, it is recommended to assign attributes to
None in the init then call the sub-initialization methods.