2013-11-25 2 views
0

Я пытаюсь получить значения из моего словаря VALUES. Моя программа создает комбинацию возможных позиций и получает последнюю позицию. Затем я хочу получить значение. Здесь все работает хорошо, кроме указанного метода .get_value. Когда я выполняю этот код я получаю:Получение значений из словаря в ООП: «AttributeError»

AttributeError: «Комбинация» объект не имеет атрибута «get_value»

Теоретически это должно быть легко, но я новичок в ООП, и я не вижу, что здесь не так.

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
  1. Вы добавление объектов Combination в xy из Position. Когда вы скажете choose_last, он вернет последний объект Combination, вставленный в xy. И вы пытаетесь вызвать метод get_value на объекте Combination, который не имеет этого метода. Вот почему вы получаете эту ошибку.

  2. Всегда используйте новые классы стиля.

+0

Могу ли я каким-либо образом использовать класс Operation1 для получения этого значения? Потому что позже я хотел бы больше использовать этот класс? – Kwiaci

Смежные вопросы