Код то верный а вот из-за того что вы не сделали отступ для функции __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__ это не метод класса а отдельная функция.