Как использовать строку, содержащую имя класса, для ссылки на сам класс?
Классы не особенные, это просто значения, содержащиеся в переменных. Если вы сказали:
class X(object): pass
в глобальной области видимости, тогда переменная "X" будет ссылкой на объект класса.
Вы можете получить глобальные переменные текущего скрипта / модуля в виде словаря, используя b globals () ’, так что:
classobj= globals()[self.__class__.__name__]
print classobj.var
(locals()
также доступен для локальных переменных; между ними вам не нужно использовать ужасный eval()
для доступа к переменным.)
Однако, как отмечает Дэвид, self.__class__
уже уже classobj
, поэтому нет необходимости бегать по извлечению из глобальных переменных по имени; self.__class__.var
в порядке. Хотя на самом деле:
print self.var
будет обычным простым способом сделать это. Члены класса доступны как члены их экземпляров, если экземпляр не перезаписывает имя чем-то другим.