Python 动态创建类

Python 动态创建类,python,class,Python,Class,我有一个函数,它返回两个列表、符号和数据,其中对应的值具有相同的索引。例如,symbols[i]给出变量名,data[i]给出实际值(int) 我想使用这两个列表动态创建一个具有以下格式的静态值的类: class a: symbols[i] = data[i] symbols[i+1] = data[i+1] dimension1 = 0.1 dimension2 = 0.03 dimension3 = 0.15 以此类推,以便稍后我可以参考如下值: a.symbols[i

我有一个函数,它返回两个列表、符号和数据,其中对应的值具有相同的索引。例如,
symbols[i]
给出变量名,
data[i]
给出实际值(
int

我想使用这两个列表动态创建一个具有以下格式的静态值的类:

class a:

    symbols[i] = data[i]
    symbols[i+1] = data[i+1]
dimension1 = 0.1
dimension2 = 0.03
dimension3 = 0.15
以此类推,以便稍后我可以参考如下值:

a.symbols[i]
a.symbols[i+1] 
其中
符号[i]
符号[i+1]
应替换为所需的变量名,如
a.var1
a.var2

如何做到这一点

编辑:在下面添加详细信息

因此,我有一个主程序,比如def main(),它应该读取这种样式的list.dat:

dimension1;0.1
dimension2;0.03
dimension3;0.15
并将值分隔为符号和数据列表

所以我不知道这些列表中到底有多少值。我希望动态创建一个类,以便能够引用主程序中的值,并将该类作为def sub1(NewClass、argument1、argument2)等参数提供给子函数。目前,我正在使用以下格式的手动创建的简单python列表(list.py):

class a:

    symbols[i] = data[i]
    symbols[i+1] = data[i+1]
dimension1 = 0.1
dimension2 = 0.03
dimension3 = 0.15

然后在主程序和子函数中使用from list import*,这会导致SyntaxWarning,告诉我只允许在模块级使用import*。因此,我真正想要的是一种智能且一致的方法来处理参数列表并将其传输到另一个函数

您可以使用
类型
动态创建一个类。如果我理解您希望在这里实现的目标,您的代码将如下所示:

my_classes = []
for i in range(0, len(data), 2):
    my_classes.append(
        type('A%d' % i, (), {'var1': data[i], 'var2': data[i+1]})
    )

我怀疑你真正想要的是,重新阅读描述,使用如下:

NewClass = type('NewClass', (object,), dict(zip(symbols, data)))
举一个简单的例子:

>>> symbols = 'foo bar baz'.split()
>>> data = range(3)
结果将是:

>>> NewClass.foo
0
>>> NewClass.bar
1
>>> NewClass.baz
2
使用允许您从键列表和关联值列表轻松创建字典,您可以将其用作新类的
\uuuu dict\uuu


然而,我不清楚你为什么想让这门课成为一门课。

我一点也不清楚你在问什么。您可以使用动态创建一个类,例如,但为什么要这样做?您不容易引用该类及其成员。你在和语言作斗争。您想实现什么?听起来似乎可以使用该模块。@Noctiskytower可行!不过,如果没有OP的进一步输入,很难判断。@noctiskytower或a:
namedtuple('NewClass',symbols)(*数据)
谢谢您的回复。我在我的作品中增加了一些细节。很抱歉不清楚,我对编程很陌生。。