【问题标题】:Get aliased name of an imported class获取导入类的别名
【发布时间】:2015-02-19 05:05:42
【问题描述】:

我有一个名为“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'?

【问题讨论】:

    标签: python alias


    【解决方案1】:

    我同意@ned 的 cmets,但出于您的目的,您可以通过子类化 Imp_MyClass 轻松创建一个新类,这对于几乎所有目的而言(几乎)与原始类相同:

    from mymod import MyClass
    
    class Imp_MyClass(MyClass):
        pass
    
    o = Imp_MyClass()
    

    【讨论】:

      【解决方案2】:

      没有办法打印它的别名。许多名称可以引用同一个类。 Python 中的类与其他类一样只是值,可以任意指定名称。您的导入语句只是一个作业。

      这就像在问,在这种情况下我如何找到对象的名称:

      a = b = c = MyClass()
      d = a
      

      哪个名字是“真正的”名字? abcd 均指对象,没有比其他任何名称更正确的名称。

      在你的代码中你可以这样做:

      from mymod import MyClass as Imp_MyClass
      AlsoMyClass = Imp_MyClass
      AnotherOne = AlsoMyClass
      o = AlsoMyClass()
      o2 = AnotherOne()
      

      哪个类名是“对的”?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-25
        • 1970-01-01
        • 2017-12-24
        • 2018-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-04
        相关资源
        最近更新 更多