python - 动态创建类

标签 python class

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

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

class a:

    symbols[i] = data[i]
    symbols[i+1] = data[i+1]

等等,以便我稍后可以引用这样的值:

a.symbols[i]
a.symbols[i+1] 

其中 symbols[i]symbols[i+1] 应替换为所需的变量名称,例如 a.var1a.var2

如何实现这一目标?

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

所以我有一个主程序,可以说 def main() 应该在这种风格的 list.dat 中读取:

dimension1;0.1
dimension2;0.03
dimension3;0.15

并将值分隔为符号和数据列表。

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

dimension1 = 0.1
dimension2 = 0.03
dimension3 = 0.15

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

最佳答案

您可以使用type动态创建类。如果我明白你想在这里实现什么,你的代码将如下所示:

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

关于python - 动态创建类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33569249/

相关文章:

python - 子进程 readline 挂起等待 EOF

php - 使用 safemysql 类来防止 SQL 注入(inject)是个好主意吗?

c++ - 在类计时器中重载前缀和后缀增量。调试时出现问题

Java 类滥用 - 最佳实践

python - 在 Mac 上安装 rpy 或 rpy2

python - 如何清空python中的套接字?

python - Python 3.5 上的 Gensim 1.0.1 TypeError : object of type 'map' has no len()?

c++ - 如何从C++中的对象数组中获取数据成员数组?

Java - 从属性文件读取对象

python - 将numpy数组逐行保存到txt文件