Рейтинг користувача: 5 / 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)