Derived class does not call init
<p>I am trying to understand a certain OAuth2/web2py integration, but some quirks in the python class model are making it difficult for me to grasp. Specifically, I have this web2py controller:</p>

<pre><code>def google():
    if 'state' in request.vars and request.vars.state == 'google':
        session.state = request.vars.state
    person = Person("google")
    print person.render()
    return person.render()
</code></pre>

<p>So we have are using the <code>Person</code> class here. The implementation is like this:</p>

<pre><code>class Person(Base):
</code></pre>

<p>No <code>__init__</code> is present in the <code>Person</code> class. The <code>Base</code> class has an <code>__init__</code> function:</p>

<pre><code>class Base(object):
    def __init__(
        self,
        hooks=[],
        theme="%(name)s/",
        view="app/generic",
        meta=None,
        context=None
        ):
        from gluon.storage import Storage
        self.meta = meta or Storage()
        self.context = context or Storage()
        self.context.alerts = []
        self.context.content_types = []
        self.context.categories = []
        self.context.menus = []
        self.context.internalpages = []
        self.theme = theme
        self.view = view

        # hooks call
        self.start()
        self.build()
        self.pre_render()

        # aditional hooks
        if not isinstance(hooks, list):
            hooks = [hooks]

        for hook in hooks:
            self.__getattribute__(hook)()
</code></pre>

<p>So my questions is as follows: If <code>Person</code> is not explicitly calling <code>Base.__init__</code>, will it be called at all?</p>

<p>Or, to make it more general: will the base class <code>__init__</code> function be called if the derived class has no <code>__init__</code> function? And if the derived class has an <code>__init__</code> function but does not explicitly call the base class <code>__init__</code> function?</p>
