Переопределение метода в 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)
