Here's the documentation. Python defines two types of packages, regular packages and namespace packages. Regular packages are traditional packages as they existed in Python 3.2 and earlier. A regular package is typically implemented as a directory containing an __init__.py file.
We could use any other legal Python name, but you will likely get tarred and feathered by other Python programmers if you change it to something else. __init__ is a special method, documented in the Python datamodel documentation.
5 It seems like you need to use __init__ in Python if you want to correctly initialize mutable attributes of your instances. See the following example:
Because of the way diamond inheritance works in python, classes whose base class is object should not call super().__init__(). As you've noticed, doing so would break multiple inheritance because you end up calling another class's __init__ rather than object.__init__().
In fact, multiple inheritance is the only case where super() is of any use. I would not recommend using it with classes using linear inheritance, where it's just useless overhead.
650 Explain all in Python? I keep seeing the variable __all__ set in different __init__.py files. What does this do? What does __all__ do? It declares the semantically "public" names from a module. If there is a name in __all__, users are expected to use it, and they can have the expectation that it will not change. It also will have ...
71 In Python, calling the super-class' __init__ is optional. If you call it, it is then also optional whether to use the super identifier, or whether to explicitly name the super class:
Although all the functionality is implemented in modules and subpackages, your package docstring is the place to document where to start. For example, consider the python email package. The package documentation is an introduction describing the purpose, background, and how the various components within the package work together.
In fact, it's a good idea to just always inherit from object unless you're writing backwards compat code for very old Python versions. In Python 3, old-style classes are gone and inheritance from object is implicit in class definitions. You shouldn't call __init__ from __new__, Python will do that on its own if you return an instance of type cls.