Как добавить с клавиатуры экземпляры класса в коллекцию?

Есть задание - создать класс и организовать коллекцию,которая будет хранить объекты класса.

Создал класс(вне методов и конструктора, вынесены счётчик и коллекция для хранения объектов класса)

import math
import collections
import datetime

class Bookorder:
      kolvorder = 0 #Будет считать количество заказчиков книг
      bookorders = []  #Коллекция где будут хранится объекты класса


      def __init__(self,surnm,dateorder,datetakeorder):
                """Инициализация атрибутов класса - фамилия,дата заказа книги,дата выдачи книги"""
                self.surnm = input('Фамилия заказчика книг: ')
                self.dateorder = input('Дата заказа книги(гггг-мм-дд): ')
                self.dateorder = time.strptime(input('Дата заказа книги(дд-мм-гггг): '), "%d.%m.%Y")
                self.datetakeorder = time.strptime(input('Дата выдачи заказа книги(дд-мм-гггг): '), "%d.%m.%Y")

Далее реализовал функцию вывода всех,уже добавленных объектов.

  def showallbookorders(self):
            """Вывод всех экземпляров класса из коллекции"""
            #bookorder = Bookorder()
            for bookorder in bookorders:
                      print(Bookorder.surnm, Bookorder.dateorder, Bookorder.datetakeorder)

Основной вопрос стоит в реализации Вот главный блок программы. Здесь введена переменная quant,которая у пойдёт в цикл,то есть хотим ввести 25 записей, то пишем 25,и работает цикл на ввод 25 записей

quant=int(input("Сколько экземпляров класса хотите создать"))  
for x in range(quant):
    bookorder = Bookorder()
    bookorders.append(bookorder)
    kolvoorder+=1 

Компилятор требует,чтобы всё равно были указаны атрибуты класса,но я их хочу ввести с клавиатуры,а не константно.

Отсюда и ошибки, которые указывают что нужно в объект класса добавить атрибуты класса.

Traceback (most recent call last):
TypeError: __init__() missing 3 required positional arguments: 'surnm', 'dateorder', and 'datetakeorder'

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

Автор решения: n1tr0xs

измените сигнатуру __init__ на эту:
def __init__(self)
Т.е. должно получиться так:

class Bookorder:
    kolvorder = 0 #Будет считать количество заказчиков книг
    bookorders = []  #Коллекция где будут хранится объекты класса


    def __init__(self):
        """Инициализация атрибутов класса - фамилия,дата заказа книги,дата выдачи книги"""
        self.surnm = input('Фамилия заказчика книг: ')
        self.dateorder = input('Дата заказа книги(гггг-мм-дд): ')
        self.dateorder = time.strptime(input('Дата заказа книги(дд-мм-гггг): '), "%d.%m.%Y")
        self.datetakeorder = time.strptime(input('Дата выдачи заказа книги(дд-мм-гггг): '), "%d.%m.%Y")

→ Ссылка