从 OOP 中的字典中获取值:"AttributeError"



我正在尝试从字典values中获取值。我的程序创建可能位置的组合,并获得最后一个位置。然后我想得到价值。除了指定的.get_value方法外,这里的一切都很好。当我执行这个代码时,我收到:

AttributeError:"Combination"对象没有属性"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. 您正在将Combination的对象追加到Positionxy中。当您说choose_last时,它将返回插入到xy中的最后一个Combination对象。您正在尝试对一个没有Combination方法的对象调用get_value方法。这就是你犯那个错误的原因。

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

最新更新