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'
添加到dictvars.\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)