Чтобы получить все атрибуты свойства в словаре, используйте это:
typeof(Book)
.GetProperty("Name")
.GetCustomAttributes(false)
.ToDictionary(a => a.GetType().Name, a => a);
не забудьте изменить значение false на true, если вы хотите также включать в себя наследуемые атрибуты.
Вы попробовали __name__
атрибут класса? т.е. type(x).__name__
даст Вам название класса, который я думаю, то, что Вы хотите.
>>> import itertools
>>> x = itertools.count(0)
>>> type(x).__name__
'count'
Этот метод работает с модернизированные классы только. Ваш код мог бы использовать некоторые классы старого стиля. Следующие работы для обоих:
x.__class__.__name__
ввести ()?
>>> class A(object):
... def whoami(self):
... print type(self).__name__
...
>>>
>>> class B(A):
... pass
...
>>>
>>>
>>> o = B()
>>> o.whoami()
'B'
>>>
Вы хотите название класса как строка?
instance.__class__.__name__