Это у тебя просто класс с полем класса? Или это датакласс?
Потому что у датаклассов можно прикрутить метаданные к полям, и потом извлечь их.
Но вообще твоя задача достаточно просто решается "в лоб".
class X:
meta = {}
a: int
meta['a'] = {'foo': 'bar'}
print(X.meta['a'])
Да, можно замутить более хитрый синтаксис, вроде:
class metadata(dict):
pass
class X(Metaclass):
a: int = metadata(foo='bar')
А потом описать класс Metaclass так, чтобы он находил поля с метаданными, и складывал их описания в одну структуру данных. По сути, dataclasses.field() примерно так и работает. Но честно, овчинка выделки не стоит. Слишком много мороки, а результат не сильно короче простого словаря.