在Python中,从变量实例化类的正确方法是什么?

13 投票
4 回答
12830 浏览
提问于 2025-04-15 13:12

假设我有一个类叫做 C

我可以写 o = C() 来创建这个类的一个实例,并把它赋值给 o

但是,如果我想把这个类本身赋值给一个变量,然后再实例化它,该怎么做呢?

比如说,我有两个类,分别是 C1C2,我想做类似这样的事情:

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

o = classToUse.instantiate()

那么,实际的 instantiate() 语法是什么呢?调用 __new__() 够吗?

4 个回答

2

这很简单,Python 不会区分一个变量是类还是函数。它只是把这个值当作普通的值来处理。

class A:
   pass
B=A
b=B()
13

你快到了。与其调用一个叫 instantiate() 的方法,不如直接调用这个变量。这个变量已经和类关联起来了,而类是可以直接调用的:

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

o = classToUse()
20
o = C2()

这样就能实现你想要的效果。如果你是想用classToUse的话,可以直接这样写:

o = classToUse()

希望这对你有帮助。

撰写回答