10

假设我有课C

我可以写o = C()来创建一个实例C并将其分配给o.

但是,如果我想将类本身分配给一个变量然后实例化它呢?

例如,假设我有两个类,例如C1and C2,并且我想做类似的事情:

if (something):
   classToUse = C1
else:
   classToUse = C2

o = classToUse.instantiate()

实际的语法是instantiate()什么?一个电话__new__()就够了吗?

4

4 回答 4

18
o = C2()

这将完成你想要的。或者,如果您打算使用 classToUse,只需使用:

o = classToUse()

希望这可以帮助。

于 2009-07-27T18:01:23.503 回答
12

您快到了。无需调用 instantiate() 方法,只需直接调用变量即可。它被分配给类,并且类是可调用的:

if (something):
    classToUse = C1
else:
    classToUse = C2

o = classToUse()
于 2009-07-27T18:06:31.793 回答
2

很简单,Python 无法识别变量在哪里是类或函数。它只是调用那个值。

class A:
   pass
B=A
b=B()
于 2009-07-27T18:02:42.813 回答
0

一个类是一个对象,就像其他任何东西一样,比如一个实例、一个函数、一个字符串……一个类也是一个实例。所以你可以将它存储在一个变量中(或者任何你可以存储东西的地方),然后用 () 来调用它,不管它来自哪里。

def f(): print "foo"

class C: pass

x = f
x() # prints foo

x = C
instance = x() # instanciates C
于 2009-07-28T01:11:32.007 回答