Como funcionam os campos de modelo do Django?

Primeiro de tudo, não gosto de programação web. Eu me deparei com o django e li um pouco sobre modelos. Fiquei intrigado com o seguinte código (de djangoproject.com):


class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)

    def __str__(self):
        # Note use of django.utils.encoding.smart_str() here because
        # first_name and last_name will be unicode strings.
        return smart_str('%s %s' % (self.first_name, self.last_name))

Pelo meu entendimento de python, first_name e last_name são variáveis de classe, certo? Como isso é usado no código (porque acho que a configuração Person.first_name ou Person.last_name afetará todas as instâncias de Person)? Por que é usado dessa maneira?

questionAnswers(3)

yourAnswerToTheQuestion