@ace606

TypeError: descriptor 'append' for 'list' objects doesn't apply to a 'RetailItem' object?

Только начал изучать классы. Пытаюсь добавить экземпляр одного класса в список экземпляра другого класса. На выходе получаю:
Traceback (most recent call last):
File "C:\Users\Ace\Desktop\Python\Классы\Класс RetailItem\#test ver2.py", line 23, in
main()
File "C:\Users\Ace\Desktop\Python\Классы\Класс RetailItem\#test ver2.py", line 17, in main
operation.purchase_item(obj)
File "C:\Users\Ace\Desktop\Python\Классы\Класс RetailItem\CashRegister_ver2.py", line 9, in purchase_item
list.append(obj)
TypeError: descriptor 'append' for 'list' objects doesn't apply to a 'RetailItem' object

Что делаю не так и как исправить?

Исходный код:
#Класс RetailItem(розничная товарная единица)
class RetailItem:
    def __init__(self, description, number, price):
        self.__description = description
        self.__number = number
        self.__price = price
    def set_number(self, number):
        self.__number = number
    def get_number(self, number):
        return self.__number
    def get_price(self):
        return self.__price
    def __str__(self):
        return "Описание: " + self.__description + \
               "\nКол-во на складе: " + self.__number + \
               "\nЦена: " + self.__price


#CashResister(кассовый аппарат)ver2
import RetailItem as rt
class CashRegister:
    def __init__(self, total): #инициализация
        self.__total = total
        self.__lst = []
    def purchase_item(self, obj): #приобрести товар
        self.__lst.append(obj)            
    def __str__(self):
        return str(self.__list_price)


#main()
import RetailItem as ri
import CashRegister_ver2 as cr
def main():
    print("Добро пожаловать в кассу")
    print("Готовы совершить покупки Д/Н ?")
    stop = input(':')
    total = 0
    lst = []
    operation = cr.CashRegister(total)
    while stop.upper() == "Д":
        name = input("Введите товар:")
        count = input("Введите кол-во для покупки:")
        price = input("Введите цену за еденицу:")
        obj = ri.RetailItem(name, count, price)
        operation.purchase_item(obj)
        print("Желаете продолжить Д/Н ?")
        stop = input(':')                
    print(operation)
main()
  • Вопрос задан
  • 1037 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
def purchase_item(self, self.__lst, obj): #приобрести товар

1. Откуда вы вообще взяли такой синтаксис?
2. У вас есть ссылка на self, по ней вы можете обратиться к любому атрибуту/методу self.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы