Использование self в классах Django Model - PullRequest
9 голосов
/ 29 июня 2011

При добавлении класса модели в models.py в Django, почему бы нам не использовать self с переменными поля, которые мы определяем? Не следует использовать переменные собственного поля вместо этого делать их переменными класса, что «может» вызвать проблему.

1 Ответ

10 голосов
/ 29 июня 2011

Django использует метаклассы для создания фактического класса на основе определения класса, предоставленного вами. Вкратце, после создания экземпляра класса вашей модели метакласс будет проходить через определения полей модели и возвращать соответствующий класс с соответствующими атрибутами.

Чтобы ответить на ваш вопрос напрямую, использование переменных класса вместо переменных экземпляра (object.self) позволяет метаклассу проверять атрибуты класса без необходимости сначала создавать его экземпляр.

Для получения дополнительной информации посмотрите источник и следующие документы:

...