Класс не имеет атрибут при помещении в блок исключений

При помещении в исключение вида try/except класс не видит атрибут item_price. При удалении try/except все отрабатывает как и должно.

Некоторая часть кода с исключением:

Class View(QtWidgets.QMainWindow, design.Ui_MainWindow):
.....
    def get_data(self):
        try:
            self.item_price = [[self.data[0]['city'], self.data[0]['sell_price']]]
        except IndexError:
           pass
        return self.item_price
.....

Исключение вызывается при return self.item_price. AttributeError: 'View' object has no attribute 'item_price'


Ответы (1 шт):

Автор решения: S. Nick

Объявите self.item_price в конструкторе:

class View(QtWidgets.QMainWindow, design.Ui_MainWindow):
    def __init__(self):
        super().__init__()
        
        self.item_price = []     # <----- или None
        
    ...   

def get_data(self):
    try:
        self.item_price = [[self.data[0]['city'], self.data[0]['sell_price']]]
    except IndexError:
       pass
       
    return self.item_price

...


или так

class View(QtWidgets.QMainWindow, design.Ui_MainWindow):
    def __init__(self):
        super().__init__()
        
    ...    
        

    def get_data(self):
        try:
            self.item_price = [[self.data[0]['city'], self.data[0]['sell_price']]]
        except IndexError:
           self.item_price = []                       # <----
           
        return self.item_price                       
...
→ Ссылка