Как в декораторе оформить аннотацию возвращаемого класса со сгенерированными в этом декораторе атрибутами
Есть декарированный класс Entity_1 с атрибутом класса attrs, содержащим список элементов класса Attr Декоратор меняет исходный класс на новый с заменой attrs со списком на attrs-объект с набором атрибутов из этого списка. Все работает. Но хочется на ходу получать нормально аннотированный класс Entity_1. Сейчас IDE не видит атрибуты attrs. Как правильно переписать декоратор?
from typing import Any, List
class Attr:
def __init__(self, name: str, title: str = None, value: Any = None):
self.name = name
self.title = title
self.value = value
class Entity:
attrs: List[Attr]
def entity(EntityClass: Entity):
class Attrs:
pass
for attr in EntityClass.attrs:
setattr(Attrs, attr.name, attr)
class WrapEntityClass():
attrs: Attrs = Attrs()
return WrapEntityClass
@entity
class Entity_1(Entity):
attrs: List[Attr] = [
Attr(name='id', title='Title1', value=111),
Attr(name='name', title='Title2', value='Name1'),
Attr(name='note', title='Title3', value='Note1')
]
e1 = Entity_1()
print(e1.attrs.id.name, e1.attrs.id.title, e1.attrs.id.value)
Вроде, я понял, что нужно как-то сгенерировать аннотацию для нового класса и вернуть из декоратора. Не понимаю как и в каком месте это сделать практически.