Существует PEP 570 , который является всего лишь черновиком, поэтому нельзя создавать только позиционные аргументы в чистом Python. Однако это можно сделать с помощью функции, написанной на C для Python.
Прежде всего Вы могли бы рассмотреть существующее [DisplayName]
для хранения дружественных имен. Как был уже покрыт, Вы просто не можете получить эту информацию в атрибуте. Можно искать атрибут от Панели, но в целом, единственный способ сделать это от атрибута состоял бы в том, чтобы передать тип в атрибут - т.е.
[Foo("Some name", typeof(Bar)]
Что точно это, Вы хотите сделать? Могут быть другие опции...
Обратите внимание на это i18n, resx, и т.д.; можно разделить на подклассы DisplayNameAttribute
и обеспечьте поиск от ключей путем переопределения DisplayName
метод считывания.
От Вашего предложения "Я просто хочу определить дружественное имя с помощью отражения", я думаю, что Вы хотите определить имя "MyFriendlyNameForThisClass" к атрибуту во времени выполнения. если так, я не думаю, что это возможно. Посмотрите этот поток.
Уточнить. Атрибут, встроенный или пользовательский, является просто метаданными для класса, или участником класса и самим атрибутом nas никакая нотация, что это связывается с чем-то.
Это неуклюже, но Вы могли выполнить итерации по всем классам в блоке, тестируя каждого на пользовательский атрибут, который "является" этим экземпляром.