我有一个名为'mymod'的模块,它定义了一个名为MyClass的类。
class MyClass:
def __init__ (self):
pass
从主模块中,此类作为Imp_MyClass导入,并创建一个对象。
from mymod import MyClass as Imp_MyClass
o = Imp_MyClass()
要从此对象打印类的名称,我们使用
print o.__class__.__name__
打印'MyClass'。我该怎么做才能打印别名,即。 'Imp_MyClass'?
答案 0 :(得分:5)
无法打印别名。许多名称可以引用同一个类。 Python中的类只是与其他类似的值,它们可以任意分配给名称。您的导入声明只是一项任务。
这就像问,如何在这种情况下找到对象的名称:
a = b = c = MyClass()
d = a
哪个名字是“真正的”名字?所有a
,b
,c
和d
都引用了该对象,没有任何名称比其他名称更正确。
在您的代码中,您可以:
from mymod import MyClass as Imp_MyClass
AlsoMyClass = Imp_MyClass
AnotherOne = AlsoMyClass
o = AlsoMyClass()
o2 = AnotherOne()
哪个班级名称是“正确的”?
答案 1 :(得分:0)
我同意@ ned的评论,但出于您的目的,您可以通过继承Imp_MyClass
轻松创建一个新类,它几乎与所有目的(几乎)完全相同。 :
from mymod import MyClass
class Imp_MyClass(MyClass):
pass
o = Imp_MyClass()