在OOP中从字典中获取值:“AttributeError”

时间:2013-11-25 07:00:57

标签: python oop dictionary

我想从我的字典VALUES中获取值。我的程序创建了可能的位置组合并获得了最后的位置。然后我想得到价值。除了指示的.get_value方法之外,一切都运行良好。当我执行此代码时,我收到:

AttributeError:'组合'对象没有属性'get_value'

从理论上说它应该很容易,但我是OOP的新手,我不知道这里有什么问题。

X = ['A','B','C']  
Y = ['1','2','3']

VALUES = {'A':10, 'B': 50, 'C':-20}

class Combination:
    def __init__(self,x,y):
        if (x in X) and (y in Y):
            self.x = x
            self.y = y
        else:
            print "WRONG!!"

    def __repr__ (self):
        return self.x+self.y

    def get_x(self):
        return self.x

    def get_y(self):
        return self.y

class Position:
    def __init__(self):
        self.xy = []
        for i in X:
            for j in Y:
                self.xy.append(Combination(i,j))

    def choose_last(self):
        return self.xy.pop()

    def __str__(self):
        return "List contains: " + str(self.xy)

class Operation1:
    def __init__(self):
        self.operation1 = []

    def __str__(self):
        s = str(self.operation1)
        return s

    def get_value(self):
        V = VALUES.get(self)
        return V

pos = Position()
print pos
last_item = pos.choose_last()
print "Last item:", last_item, pos

last_value = last_item.get_value() # <---- Here is a problem

我如何获得我的职位价值?值由X值决定 - 这是A,B或C.在字典中,我有一个数字的字母值。

1 个答案:

答案 0 :(得分:1)

  1. 您要将Combination的对象追加到xy的{​​{1}}。当您说Position时,它会返回插入choose_last的最后一个Combination对象。并且您试图在xy对象上调用get_value方法,该方法没有该方法。这就是为什么你会收到这个错误。

  2. 始终使用新的样式类。