如何在不使用 Python 实例化的情况下获取类的类型?

Reg*_*May 10 python oop python-3.x

给定一个对象,很容易在 python 中获取对象类型:

obj = SomeClass()
t = type(obj)
Run Code Online (Sandbox Code Playgroud)

如何在不首先创建类的实例的情况下执行此操作?

背景:一旦您拥有类型,您就可以轻松创建该类型的实例。使用这种机制,我想将一个类型传递给一个对象,该对象稍后将创建该类型的实例。不必先创建一个会立即再次丢弃的对象是非常合理的。

jbn*_*dlr 5

请参阅此示例代码:

class MyClass(object):
    pass

if __name__ == '__main__':
    o1 = MyClass()
    c = MyClass
    o2 = c()

    print(type(o1), type(o2), MyClass)
Run Code Online (Sandbox Code Playgroud)

定义一个类会将其绑定到它的名称(此处:)MyClass,这只不过是对该定义的引用。在这个例子中,发出c = MyClass只是将类引用镜像到另一个变量,变量的内容cMyClass现在完全相同。MyClass()因此,您可以通过调用其中任何一个(即或)来实例化该类的对象c(),从而产生相同的效果。

此外,测试实例化对象的类型会产生完全相同的类引用。您甚至可以更进一步执行以下操作:

o3 = type(o1)()
Run Code Online (Sandbox Code Playgroud)

它创建了该类的一个新实例o1