代码之家  ›  专栏  ›  技术社区  ›  Uri

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

  •  6
  • Uri  · 技术社区  · 17 年前

    假设我有课 C

    我会写字 o = C() 创建的实例 C 分配给 o .

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

    例如,假设我有两个类,例如 C1 C2

    if (something):
       classToUse = C1
    else:
       classToUse = C2
    
    o = classToUse.instantiate()
    

    实际的语法是什么 instantiate() ? 是打电话给 __new__() 足够地

    4 回复  |  直到 17 年前
        1
  •  16
  •   André Eriksson    17 年前
    o = C2()
    

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

    o = classToUse()
    

        2
  •  12
  •   Jeff    17 年前

    你快到了。直接调用变量,而不是调用instantiate()方法。它被分配给类,并且类是可调用的:

    if (something):
        classToUse = C1
    else:
        classToUse = C2
    
    o = classToUse()
    
        3
  •  2
  •   Arpegius    17 年前

    很简单,Python无法识别变量是类还是函数。这就是所谓的价值。

    class A:
       pass
    B=A
    b=B()
    
        4
  •  0
  •   Paul D. Waite    15 年前

    一个类是一个对象,就像一个实例,一个函数,一个字符串。。。类也是一个实例。因此,您可以将其存储在变量中(或存储内容的任何其他地方),并使用()调用它,无论它来自何处。

    def f(): print "foo"
    
    class C: pass
    
    x = f
    x() # prints foo
    
    x = C
    instance = x() # instanciates C