Qual é a diferença de escrever código em uma classe e em def __init __ (self) em Python? [duplicado]

Duplicata Possível:
Variáveis ​​dentro e fora de uma função __init __ () de classe

Eu entendo que quando uma classe é chamada, ela executará o código__init__ antes de qualquer coisa. Eu ainda não vejo a diferença entre isso, e escrevendo o código diretamente sob a classe.

Por exemplo:

class main():
  x = 1

  def disp(self):
    print self.x
class main():
  def __init__(self):
    self.x = 1

  def disp(self):
    print self.x

Para mim, ambos têm a mesma funcionalidade. (Talvez eu esteja perdendo alguma coisa.) Eu gostaria de saber qual é mais (ahem) pythonic e por quê.

questionAnswers(5)

yourAnswerToTheQuestion