Если я импортировать класс и переименовать его подклассов, это довольно просто, чтобы найти новое имя класса:Можем ли мы найти имя класса _local_ для объекта, созданного из класса, импортированного с помощью «import as»?
>>> from timeit import Timer
>>> class Test(Timer):
... pass
...
>>> test = Test()
>>> test.__class__.__name__
'Test'
Однако, если я псевдоним класса, как я импортировать его, он сохраняет свое название от своего модуля хоста :
>>> from timeit import Timer as Test2
>>> test2 = Test2()
>>> test2.__class__.__name__
'Timer'
Позже, я хочу, чтобы предоставить пользователю, выход, который знает о названии они данного класса в их имен. Рассмотрите:
def report_stats(timer):
print("Runtime statistics for %s:" % timer.__class__.__name__)
...
Есть ли способ, чтобы получить строку для чтения «test2», не хватает итерацию переменных в пространстве имен, чтобы проверить точное совпадение?
Нет. Вам придется искать его, и у него всегда может быть несколько имен. Имя, которое было во время определения, - это все, что было сохранено в классе. Когда вы подклассифицируете его, вы не переименовываете его, вы создаете новый класс с исходным классом в качестве одной из его баз. – agf
Если вы ответите на это, @agf, я приму это. Я также дам свой собственный ответ, основанный на ужасных вещах, которые я обнаружил в нижней части кроличьей дыры. – abathur