Python 如何使用变量向对象添加参数

Python 如何使用变量向对象添加参数,python,Python,我试图使用循环将一些变量放入容器(对象) 我创建了以下类 class Box(): pass 现在我想初始化这个类,并将文本文件中的变量添加到其中。我的文本文件看起来像: a = 1 b = 2 c = 3 d = 4 我尝试了以下代码 vars = Box() filename = ('inputfile.txt') with open (filename) as f: for line in f: parts = line.split()

我试图使用循环将一些变量放入容器(对象)

我创建了以下类

class Box():
    pass
现在我想初始化这个类,并将文本文件中的变量添加到其中。我的文本文件看起来像:

a = 1
b = 2
c = 3
d = 4
我尝试了以下代码

vars = Box()

filename = ('inputfile.txt')

with open (filename) as f:
    for line in f:
        parts = line.split()
        var_name = str(parts[0])
        var_value = parts[2]
        vars.var_name = var_value

我不明白为什么这种方法不起作用。

也许可以试试类似的方法

vars[var_name + ''] = var_value
(没有python代码)

为什么不使用setattr()

当你这样做的时候

vars.var_name = var_value
这等于将键
'var\u name'
添加到dict
vars.\uu dict\uuu

我认为你想要的东西可以通过使用来实现。 使用以下命令代替
vars.var\u name=var\u value

setattr(vars, var_name, var_value)

我认为您试图做的是使用类作为数据的存储介质。正如asongtoruin所说,你可以使用字典。 否则,您需要使该类成为实际的对象:

class Box():
    def __init__(self):
        pass
    def __getitem__(self, name):
        return getattr(self, name)
    def __setitem__(self, name, value):
        return setattr(self, name, value)
然后,您可以按原样使用几乎所有的代码:

vars = Box()

filename = ('inputfile.txt')

with open (filename) as f:
    for line in f:
        parts = line.split()
        var_name = str(parts[0])
        var_value = parts[2]
        vars[var_name] = var_value

print(vars.a)

barak manos已经解释了您没有使用的原因:
vars.var_name
不使用变量
var_name
的值,因为调用类方法的语法不支持这种表示法(有充分的理由).

不使用字典有什么特别的原因吗?那么你到底希望达到什么目的呢?即使上面的代码以某种方式起作用,在每次迭代时设置
vars.var_name=var_value
意味着
vars.var_name
的值将被重复重写,并最终达到上一次迭代中给出的值。感谢您的帮助,这里有很多好的和有用的答案。
vars = Box()

filename = ('inputfile.txt')

with open (filename) as f:
    for line in f:
        parts = line.split()
        var_name = str(parts[0])
        var_value = parts[2]
        vars[var_name] = var_value

print(vars.a)