Как работает наследование в объектно-ориентированном программировании на Python
Создавая текстовое поле в модели в Django, мы делаем следующее:
class Book(models.Model):
title = models.CharField(max_length=200)
CharField, является классом со следующей цепочкой наследования
Файл: django.db.models.fields.init
Классы: class Field(RegisterLookupMixin) / class CharField(Field)
А models.Model, который используется для регистрации модели, в свою очередь, имеет следующую цепочку наследования:
File: django.db.models.base
Classes: class ModelBase(type) / class Model(metaclass=ModelBase):
Вопросы:
How models works when registering a model.CharField ? CharField is not a direct descendant of models, then why can we specify them after each other?
When registering a model, we declare class Book(models.Model). Specify CharField in the fields. Why can we do this, despite the fact that they are not directly related by inheritance?