@egyuiop123

Как исправить TypeError: Products() takes no arguments?

from django.http import HttpResponse
from random import randint


class Products:
    id = 1


def __init__(self, name: str, firma: str, category: str, price: int) -> None:
    self.id = Products.id
    self.name = name
    self.firma = firma
    self.category = category
    self.price = price
    Products.id += 1


def __str__(self) -> str:
    return f'''
    Id: {self.id}<br>
    Name: {self.name}<br>
    Firma: {self.firma}<br>
    Category: {self.category}<br>
    Price: {self.price}<br>
    '''


technic = [
              Products('Холодильник', 'LG', 'кухонная техника', 70600),
              Products('Утюг', 'HIER', 'гладильная техника', 53450)
          ] + [
             Products('Посудомоечная машина', 'LERAN', 'кухонная техника', 22000) for i in range (5)
        ]


def index(req):
    a = randint (1, 100)
    technic = Products('Утюг', 'HIER', 'гладильная техника', 53450)
    return HttpResponse(f'Случайное число:{a}<br>{str(technic)}')

При запуске возникает ошибка: TypeError: Products() takes no arguments.
  • Вопрос задан
  • 200 просмотров
Решения вопроса 1
Maksim_64
@Maksim_64
Data Analyst
Код то верный а вот из-за того что вы не сделали отступ для функции __init__ вам и выдает вашу ошибку.
class Products:
    id = 1

    def __init__(self, name: str, firma: str, category: str, price: int) -> None:
        self.id = Products.id
        self.name = name
        self.firma = firma
        self.category = category
        self.price = price
        Products.id += 1

    def __str__(self) -> str:
        return f'''
Id: {self.id}

Name: {self.name}

Firma: {self.firma}

Category: {self.category}

Price: {self.price}'''
    
technic = [
Products('Холодильник', 'LG', 'кухонная техника', 70600),
Products('Утюг', 'HIER', 'гладильная техника', 53450)
] + [
Products('Посудомоечная машина', 'LERAN', 'кухонная техника', 22000) for i in range (5)
]

Вот так все работает.
А у вас функция def __init__ это не метод класса а отдельная функция.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы