Quelle est la différence entre la classe et les variables d'instance?

Quelle est la différence entre la classe et les variables d'instance en Python?

class Complex:
    a = 1

et

class Complex:
    def __init__(self):
        self.a = 1

À l'aide de l'appel: x = Complex().a dans les deux cas attribue x à 1.

Un peu plus en profondeur sur la réponse __init__() et self sera appréciée.