创建一个实例,我已经有了这个类型

Mat*_*und 13 python

class ClassA: pass
mytype = type(ClassA)
Run Code Online (Sandbox Code Playgroud)

使用mytype,如何创建ClassA实例?

请注意,我不是在寻找这个作为我的答案:)

instance = ClassA()
Run Code Online (Sandbox Code Playgroud)

我知道在这个例子中,这就是你需要做的所有事情,但是假设你有这种类型(mytype),你对它一无所知,你需要创建它的一个实例.

我试着调用mytype()并返回一个错误,指出type()需要1或3个参数.我想这些参数可能与你想要传递给正在创建的对象的init方法的任何参数有关.

注意:我已经看到了一些问题,询问如何在给定表示其完全限定名称的字符串的情况下创建对象.请注意,在这里,我已经有一个类型,所以它有点不同?我认为?

编辑...我曾希望我可以做相同的以下.Net代码:

class A {}

class Program
{
    static void Main(string[] args)
    {
        Type type = typeof(A);

        // Given the type, I can create a new instance
        object new_instance = Activator.CreateInstance(type);
    }
}
Run Code Online (Sandbox Code Playgroud)

我假设在Python中,类型(ClassA)提供了一些东西,我以后可以使用它来创建ClassA的实例.看起来我误解了python中的类型.

Chr*_*sse 22

如果你使用一个新的样式类,它将工作:

class ClassA(object):
    pass

o = ClassA()
mytype = type(o)
new_object = mytype()
Run Code Online (Sandbox Code Playgroud)

  • ...但是如果您在__init __()中使用参数,显然不会 (3认同)
  • @Basic:`__init__()`中的参数有什么问题?当我用这样的内容更新`ClassA`时:`__init__(self, a, b)`,那么我可以毫无问题地使用上面的示例,就像`mytype(1, 2)`或`mytype(a=1) ,b=2)`。 (2认同)