Python декларативное автоматическое задание имени класса на основе имени переменной - PullRequest
1 голос
/ 06 января 2020

Engli sh версия (извините, Google trad):

Меня вдохновили ORM Django / SQLalchemy и Peewee, но я никогда не мог понять, как в декларативном классе ему удалось взять имя поля в качестве имени вызываемого класса.

Пример:

from django.db import models

class Musician (models.Model):
     first_name = models.CharField (max_length = 50)
     last_name = models.CharField (max_length = 50)
     instrument = models.CharField (max_length = 100)

По существу, класс CharField автоматически установит атрибут name='first_name' во время инициализации

Может ли кто-нибудь помочь мне понять?

Версия Francaise

Добрый день, эссеер, доктор философских наук django / sqlalchemy et peewee mais je n'arrive jamais Командный комментарий: декларация о прибытии и заявлении.

Например:

from django.db import models

class Musician(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    instrument = models.CharField(max_length=100)

En gros, la classe CharField va automatiquement mettre l'attribut name='first_name' lors de l'in'inialisation

Есть ли у вас какой-нибудь интересный вопрос?

1 Ответ

0 голосов
/ 08 января 2020

Python метаклассы. У вас есть функция конструирования класса, которая просматривает все атрибуты класса и затем что-то делает (например, присваивает атрибут имени и т. Д. c).

Первое, что я погуглил, что выглядело хорошо, но поиск метакласса или декларативный базовый класс, и вы найдете больше информации. На мой взгляд, слишком много информации для SO-ответа.

https://realpython.com/python-metaclasses/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...