如何在不使用python中的字典的情况下使用另一个变量的变量值?

时间:2015-11-27 03:36:39

标签: python class dictionary

人们已经给出了在另一个变量中使用变量值的答案:

  1. 创建字典,
  2. 使用dict [oldVariable]而不是定义新的
  3. 我认为这不适用于我试图做的事情......

    我试图为一个向量定义一个类,该类将列表作为输入,并为向量中的每个元素在向量中指定一个条目。

    我的代码现在看起来像这样:

    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)
    

    我该怎么做?

2 个答案:

答案 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>