Хранится в переменной , подчеркивание :
>>> Test.is_._name_ = 'is'
>>> Test.is_.name
'is'
Это также исправит значение repr, и вызов по значению по-прежнему работает:
>>> list(Test)
[<Test.one: 'one'>, <Test.is: 'is'>]
>>> Test('is')
<Test.is: 'is'>
Конечно, для доступа к атрибуту все равно придется использовать объявленное имя, потому что в противном случае это будет синтаксическая ошибка.
Чтобы разрешить вызов по имени члена, вставьте его в карту:
>>> Test.is_._name_ = 'is'
>>> Test._member_map_['is'] = Test.is_
>>> Test['is']
<Test.is: 'is'>
Если вам нужно больше, чем простой псевдоним, вы можете удалить исходное имя и / или позаботиться о сохранении порядка в карте участников.