Ми створювали моделі в Django / SQLAlchemy.
Ось приклад:
class Order(models.Model):
user = models.ForeignKey('user.User')
date = models.DateField()
order_id = model.CharField()
Чи замислювались ви над тим, чому, незважаючи на те, що ми встановили поле як екземпляр DateField(), коли ви робите:
order = Order.objects.last()
print(order.order_id)
.. ви не отримуєте екземпляр DateField(), натомість ви отримуєте значення поля date з бази даних.
Справа в тому, що тут активно працює метаклас Python... метаклас фактично переназначив атрибути вашого класу Order, щоб вони мали кастомну поведінку; а саме, щоб повертати значення поля order_id з бази даних.
Ось погляньте на цей метаклас, який виконує цю магію: https://github.dev/django/django/blob/main/django/db/models/init.py#94
Перекладено з: Python MetaClasses in Action