В чем магия подсказки типа декоратора dataclass модуля dataclasses?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 В чем магия подсказки типа декоратора dataclass модуля dataclasses?

Сообщение Anonymous »

Я пытаюсь глубже понять, как работает модуль классов данных Python, в частности, роль подсказок типов в определении атрибутов класса.
Когда я определяю класс данных следующим образом: p>

Код: Выделить всё

from dataclasses import dataclass

@dataclass
class Person:
name: str
age: int
Я заметил, что подсказки типа ( для имени и int для возраста) используются декоратором класса данных для создания различных методов, таких как __init__, __repr__ и __eq__ (меня интересуют только в __init__). Такое автоматическое создание делает его очень удобным, но мне интересны основные механизмы, обеспечивающие эту функциональность.
В частности, у меня есть вопрос:
Как декоратор класса данных использует подсказки типов для создания этих методов?
Я скопировал и вставил тот же код из исходного файла классов данных в свой рабочий каталог с именем custom_dataclass (для тестирования). целей), но мой линтер не распознал атрибуты __init__.
Изображение

На рисунке 1 вы можете видеть, что когда я пытаюсь создать экземпляр класса Person, я правильно визуализирую все атрибуты, упомянутые в классе Person. Этот класс использует оригинальный декоратор @dataclass. Однако когда я пробую то же самое с PersonCustom, используя декоратор @custom_dataclass, атрибуты вообще не появляются, как показано на рисунке 2.
Изображение

Если у кого-то есть ответы или идеи, я хотел бы их услышать. Заранее спасибо за вашу помощь!
Я также пытался увидеть метод declarative_base из sqlalchemy, например

Код: Выделить всё

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
__tablename__ = "user"

id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)

User()
но атрибуты тоже не отображаются
Изображение


Подробнее здесь: https://stackoverflow.com/questions/785 ... ses-module
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ссылка Python dataclasses.dataclass на переменную вместо переменной экземпляра
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Когда использовать фабрику декоратора и декоратора?
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Когда использовать фабрику декоратора и декоратора?
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Введите аннотацию подсказки для декоратора с новым синтаксисом.
    Anonymous » » в форуме Python
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Введите аннотацию подсказки для декоратора с новым синтаксисом.
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»