【问题标题】:What happened to types.ClassType in python 3?python 3 中的 types.ClassType 发生了什么?
【发布时间】:2010-10-06 11:12:12
【问题描述】:

我有一个脚本,我在其中做一些神奇的事情来动态加载模块,并实例化模块中的第一个类。但是我不能在 Python 3 中再使用types.ClassType。现在正确的方法是什么?

【问题讨论】:

    标签: class types python-3.x


    【解决方案1】:

    我想通了。似乎类的类型是“类型”。这是一个如何在运行时区分类和其他对象的示例。

    >>> class C: pass
    ... 
    >>> type(C)
    <class 'type'>
    >>> isinstance(C, type)
    True
    >>> isinstance('string', type)
    False
    

    【讨论】:

    • 谢谢!我尝试使用type(C) is type,它适用于简单的类,但不适用于 C 使用元类。正如您所写,isinstance(C, type) 在这种情况下仍会返回 True
    【解决方案2】:

    它被用于classic classes。在 Python 3 中,它们消失了。 我想你可以使用类似的东西:

    issubclass(ClassName, object)
    

    【讨论】:

      猜你喜欢
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 2011-04-02
      • 2018-03-03
      • 2020-04-05
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      相关资源
      最近更新 更多