人们已经给出了在另一个变量中使用变量值的答案:
我认为这不适用于我试图做的事情......
我试图为一个向量定义一个类,该类将列表作为输入,并为向量中的每个元素在向量中指定一个条目。
我的代码现在看起来像这样:
class vector:
def __init__(self, entries):
for dim in range(len(entries)):
for entry in entries:
self.dim = entry #here I want to assign self.1, self.2, etc all the way to however
#many elements are in entries, but I can't replace self.dim with
# dict[dim]
def __str__(self):
string = []
for entry in range(1,4):
string.append(self.entry)
print(string)
我该怎么做?
答案 0 :(得分:1)
你在这里做的有点奇怪,因为你正在使用一个名为" dim"的变量。在for中,但你没有对该变量做任何事情。看起来你想要使用一个类就好像它是一个数组...为什么不在类中定义一个数组并使用索引从外部访问它? v.elements [1] ......等等?
示例:
class Vector:
def __init__(self, entries):
self.elements = []
for e in entries:
self.elements.append(self.process(e))
def __str__(self):
buff = ''
for e in self.elements:
buff += str(e)
return buff
希望这有帮助。
答案 1 :(得分:0)
如果我正确地阅读了您的问题,我认为您正在寻找setattr
函数(https://docs.python.org/2/library/functions.html#setattr)。
如果您想使用特定字符串值命名字段,您可以这样做:
class vector:
def __init__(self, entries):
for dim in range(len(entries)):
for entry in entries:
#self.dim = entry
setattr(self, str(dict[dim]), dim)
这将导致您的对象self
具有以dict[dim]
的值为名称且属于dim
的值而命名的属性。
话虽如此,请注意整数值通常是较差的属性名称。如果没有错误,您将无法print obj.1
。你必须getattr(obj,'1')
。
我同意@Ricardo的说法,你正在解决这个奇怪的问题,你应该重新考虑如何构建这个类,但我想直接回答这个问题,以防其他人在这里寻找如何进行动态命名。< / p>