Статическая (классовая) переменная модели базы данных движка приложения Google

В GAP вы создаете модель, которую они показывают:

 class Pet(db.Model):
        name = db.StringProperty(required=True)
        type = db.StringProperty(required=True)
        birthdate = db.DateProperty()
        weight_in_pounds = db.IntegerProperty()
        spayed_or_neutered = db.BooleanProperty()

Почему это создается как статические переменные?

Не должны ли они быть, но в __init__() метод и очистить как self.variable?

1 ответ

Решение

Когда вы создаете экземпляр экземпляра Pet, он обычно не создается, а создается метаклассом.

Читайте здесь, что такое метакласс: что такое метакласс в Python?

Там есть раздел с надписью "Какого черта вы будете использовать метаклассы?", В котором кратко обсуждается Django ORM. Схема db.Model очень похожа на Django ORM, так что это объяснение применимо.

Другие вопросы по тегам