Рейтинг:  0 / 5

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

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