Переопределение метода в Python — это изменение базового родительского метода класса в его подклассе путём создания точно такого же метода, но с другими параметрами. Это если кратко.
Задание: создать класс Editor с двумя методами на просмотр и редактирование документа с выведением информации по этим двум методам на экран. Затем следует создать подкласс ProEditor, в котором метод для редактирования документа будет переопределён. Для редактирования документа нужен ключ, в результате ввода которого появится информация с доступом к редактированию и вызовом переопределённого метода подкласса ProEditor. При неверном введении ключа, будет возвращение к классу Editor и начальному базовому методу с выводом в отказе к доступу без ключа.
Решение задачи:
Шаг 1. Создание класса Editor. Вывод информации для чтения без ключа и информации, что редактирование данного документа не доступно для бесплатной версии.
class Editor: def view_document(self): print("Document reading: you can read this document free of charge") def edit_document(self): print("Editing of the document is not available for free version") output=Editor() Editor.view_document(output) Editor.edit_document(output) print("-------------------------")
Шаг 2. Создание подкласса ProEditor. Переопределение метода edit_document. Создание доступа к определённому документу по ключу.
class ProEditor(Editor): def edit_document(self): print("Congratulations! You can edit this document!")
Шаг 3. Ввод ключа лицензионного для доступа к редактированию документа. Создание экземпляра класса ProEditor для переопределённого метода для доступа по ключу. Создание экземпляра класса Editor для базового метода для отказа к доступу без ключа.
key = str(input("Enter a key for editing this document:")) if key == "ahFdWFB156": login = ProEditor() ProEditor.edit_document(login) else: login_incorrect = Editor() Editor.edit_document(login_incorrect)
Итог. В целом весь код выглядит так:
class Editor: def view_document(self): print("Document reading: you can read this document free of charge") def edit_document(self): print("Editing of the document is not available for free version") output=Editor() Editor.view_document(output) Editor.edit_document(output) print("-------------------------") class ProEditor(Editor): def edit_document(self): print("Congratulations! You can edit this document!") key = str(input("Enter a key for editing this document:")) if key == "ahFdWFB156": login = ProEditor() ProEditor.edit_document(login) else: login_incorrect = Editor() Editor.edit_document(login_incorrect)