在Python中创建动态命名的类实例

时间:2016-07-18 22:14:01

标签: python python-3.x

我需要创建一个从变量内容命名的特定类的新实例。

例如,创建一个名为Foo类的实例,命名为" s"变量是。这就是我试过的

<div class="ui grid">

以上代码返回&#34;不能分配给函数调用&#34;错误。

我需要它来创建一个名为&#39; bar&#39;在这种情况下,在Foo类中,但我也需要能够改变这个&#39;变量到任何字符串,并使其仍然有效。

如果我有另一种方法来创建类实例,然后稍后使用&#34; s&#34;来访问它们。变量也会起作用。

许多类似的问题已经通过创建预定义的词典得到了回答,但在我的情况下,这些词典必须是数百个项目并且手写,因此不切实际且不是非常蟒蛇。我需要完全动态地创建和访问实例,希望通过名称,但如果有其他方式,我也可以这样做。

1 个答案:

答案 0 :(得分:0)

这应该这样做。

def make_class(name):
    class_text = """
global {} # Makes the class object global.
class {}: # You put the class here.
    pass
""".format(name, name) # Formats the text. There are a couple different ways to do this.
    exec(class_text)

示例:

>>> make_class("Foo")
>>> make_class("Bar")
>>> Foo()
<__main__.Foo object at 0x7fedebcda748>
>>> Bar()
<__main__.Bar object at 0x7fedebcda8d0>