Ну обычно без привязки к Django, когда создаётся класс, определяется метод init, чтобы атрибуты у экземпляра создавались на лету. То есть,
class MyClass:
def __init__(self, name):
self.name = name
Создание экземпляра:
a = MyClass(Kirill)
a.name - вернёт нам Kirill.
Почему в Django поля создаются иным образом?