¿Cómo funcionan los campos modelo de Django?

En primer lugar, no estoy en la programación web. Me topé con Django y leí un poco sobre modelos. Me intrigó el siguiente 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))

Por mi comprensión de python, first_name y last_name son variables de clase, ¿verdad? ¿Cómo se usa eso en el código (porque supongo que establecer Person.first_name o Person.last_name afectará a todas las instancias de Person)? ¿Por qué se usa de esa manera?

Respuestas a la pregunta(3)

Su respuesta a la pregunta