enempluie
@enempluie
Познающий

Функция создания дубликата класса?

И снова привет, Тостер.
Решив создать простую программу, натолкнулся на ряд небольших трудностей.
1. Сохранение дубликата класса со всеми его атрибутами(решил с помощью pickle)
2. Создание дубликата класса с помощью функции(пользователь программки выбирает действие, записывает нужные данные,
которые в дальнейшем перейдут в аргументы функции, которая, в свою очередь создаст дубликат класса)
Выберите действие -> добавить ученика -> введите данные о ученике(имя, возраст, класс, информация) -> сохранение данных в одноимённые переменные -> вызов функции создания ученика(дубликата класса) и передача данных как аргументов - сохранение дубликата класса с помощью pickle.
class Student:
    def __main__(self, name, age, sclass, info):
        self.name = name
        self.age = age
        self.sclass = sclass
        self.information = info

# код ниже в отдельном модуле, тут пишу всё сразу
import pickle  # importing for AddStudent
"""ADD STUDENT BLOCK"""
students_txt_files = []
last_count_txt = open('last_count.txt', 'w')
last_count_txt.write('0')
last_count_txt.close()


def add_student(name, age, sclass, info=None):
    new_student = Student()  # create instance class(new student)
    default_txt_tamplate = 'student_'  # create student text file template
    last_count = open('last_count.txt')  # opening text file with last count number
    count = int(last_count.read(1))  # writing last count number to count
    student_name_txt = default_txt_tamplate[0] + str(count)  # creating new student text file name
    student_txt = open(student_name_txt, 'w')  # creating new student text file
    pickle.dump(new_student, student_txt, 3)  # save instance class(student)

Не совсем до конца написан, но проблема заключается в этом:
def add_student(name, age, sclass, info=None):
    new_student = Student()  # create instance class(new student)

Как аргументы функции передать в аргументы для создания дубликата класса?
Пробовал так, не получилось. пишет Unexpected argument во второй строчке:
add_student(name, age, sclass, info=None):
    new_student = Student(name, age, sclass, info)  # create instance class(new student)

Надеюсь на вашу помощь)
  • Вопрос задан
  • 630 просмотров
Решения вопроса 1
urtow
@urtow
*nix, python, QA, bagpipe, folk music
class Student:
    def __main__(self, name, age, sclass, info):


Замени на

class Student:
    def __init__(self, name, age, sclass, info):


И все будет работать - ошибка Unexpected argument пропадет.

Ты неправильно назвал функцию инициализатор класса
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sim3x
@sim3x
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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