Python

Функция Python super ()

Функция Python super ()
Сценарий Python может выполнять как структурированное программирование, так и объектно-ориентированное программирование (ООП). Super () - это встроенная в Python функция ООП. Базовые знания ООП предпочтительны для понимания цели и использования супер() метод. Одна из важных особенностей ООП - наследование. Новый класс может быть создан путем наследования функций другого класса, и он называется наследованием. Здесь новый класс называется подклассом или дочерним классом, а другой класс называется суперклассом или родительским классом. Супер () функция используется в дочернем классе для ссылки на родительский класс и доступа ко всем переменным и методам родительского класса. Эта функция делает наследование более управляемым. Как эту функцию можно использовать в Python, показано в этом руководстве.

Пример-1: Использование функции super () в одиночном наследовании

Когда дочерний класс создается путем наследования родительского класса, он называется одиночным наследованием. Использование супер() функция в одиночном наследовании показана в следующем скрипте. Книга здесь родительский класс, который содержит метод конструктора для инициализации данных, bookType () метод печати типа книги и скидка() способ отображения предложения скидки доступен или нет. Eng_book является здесь дочерним классом, который содержит метод конструктора, в котором супер() функция используется для вызова конструктора родительского класса. У дочернего класса есть другой метод с именем display_details () распечатать подробную информацию о книге. Объекты родительского и дочернего классов были созданы позже для вызова различных методов классов.

# Определить родительский класс
учебник:
# Определить конструктор
def __init __ (я, название, автор, тип, предложение):
себя.title = название
себя.author = author
себя.type = type
себя.предложение = предложение
# Определить функцию для отображения типа книги
def bookType (self):
если я.type == 1:
print ("% s - это книга% s." %(себя.название, «Инжиниринг»))
если я.type == 2:
print ("% s - это книга% s." %(себя.название, «Медицинский»))
если я.type == 3:
print ("% s - это книга% s." %(себя.title, «Финансы»))
# Определите функцию для отображения предложения скидки
def скидка (самостоятельно):
если я.предложение == Истина:
print ("На книгу действует скидка.")
еще:
print ("На книгу нет скидки.")
# Определить дочерний класс
class Eng_book (Книга):
# Определить конструктор
def __init __ (я, название, автор, тип, предложение, цена):
супер().__init __ (название, автор, тип, предложение)
себя.цена = цена
# Определите функцию для отображения сведений о книге
def display_details (сам):
супер().скидка()
если я.предложение == Истина:
себя.цена = самостоятельно.цена - самостоятельно.цена * 0.15
print ("Название книги:% s"% self.заглавие)
print ("Имя автора:% s"% self.автор)
print ("Цена:% 0.2f "% себя.цена)
print ("Использование родительского класса:")
# Определить объект родительского класса
objbook = Book ('Медицинская микробиология', 'Эрнест Явец, Эдвард А. Адельберг, Джозеф Л. Мельник, 2, Ложь)
# Вызов функции для отображения типа книги
objbook.bookType ()
# Вызов функции для отображения предложения скидки
objbook.скидка()
print ("\ nИспользование дочернего класса:")
# Определить объект дочернего класса
objEngBook = Eng_book ('Инженерная математика', 'Х. К. Дасс', 1, Верно, 50)
# Вызов функции для отображения информации о книге
objEngBook.display_details ()

Выход:

Следующий вывод появится после выполнения вышеуказанного скрипта. Первый вывод был сгенерирован с использованием объекта родительского класса, а второй вывод был сгенерирован с использованием объекта дочернего класса.

Пример-2: Использование функции super () при множественном наследовании

Когда новый класс создается путем наследования нескольких классов, этот тип наследования называется множественным наследованием. Использование функции super () в множественном наследовании показано в следующем скрипте. отделение является родительским классом, который содержит метод конструктора для инициализации переменных и отображать() метод печати названия отдела. Курсы наследуются ли дочерние классы от отделение класс, и он содержит метод конструктора и display_Course_info () метод отображения деталей курса. Учителя наследуются ли дочерние классы от отделение класс, и он содержит метод конструктора и display_Teacher_info () метод отображения сведений об учителе. Teacher_Course является последним дочерним классом скрипта, который был определен путем наследования обоих Курсы а также Учителя классы. Объекты трех дочерних классов были созданы в конце скрипта для доступа к различным методам классов. В супер() функция была использована внутри метода конструктора всех дочерних классов для вызова конструктора родительского класса. Для создания объекта дочернего класса требуются четыре значения аргумента, поскольку конструкция класса Department содержит четыре аргумента.

# Определить родительский класс
class Department ():
def __init __ (self, dept_name, total_courses, total_credit, total_teachers):
себя.dept_name = dept_name
себя.total_courses = total_courses
себя.total_credit = total_credit
себя.total_teachers = total_teachers
def display (self):
print ("Название отдела:% s"% self.dept_name)
# Определить первый дочерний класс
Курсы класса (кафедра):
def __init __ (я, имя, курсы, кредиты, учителя):
# Вызов конструктора родительского класса
супер().__init __ (имя, курсы, кредиты, учителя)
def display_Course_info (сам):
print ("Всего курсов:% d"% self.total_courses)
print ("Всего кредитов:% d"% self.total_credit)
# Определить второй дочерний класс
класс учителей (кафедра):
def __init __ (я, имя, курсы, кредиты, учителя):
# Вызов конструктора родительского класса
супер().__init __ (имя, курсы, кредиты, учителя)
def display_Teacher_info (сам):
print ("Всего учителей:% d"% self.total_teachers)
# Определить третий дочерний класс, унаследованный от двух классов
class Teacher_Course (Курсы, Учителя):
def __init __ (я, имя, курсы, кредиты, учителя):
# Вызов конструктора родительского класса
супер().__init __ (имя, курсы, кредиты, учителя)
def display_details (сам):
супер().отображать()
супер().display_Course_info ()
супер().display_Teacher_info ()
print ("Использование первого дочернего класса")
objCourses = Курсы ('CSE', 72, 150, 50)
ОБЪЕКТИВЫ.отображать()
ОБЪЕКТИВЫ.display_Course_info ()
print ("\ nИспользование второго дочернего класса")
objTeachers = Учителя ('BBA', 65, 140, 55)
objTeachers.отображать()
objTeachers.display_Teacher_info ()
print ("\ nИспользование третьего дочернего класса, унаследованного от нескольких классов")
objDCT = Teacher_Course ('Английский', 60, 122, 20)
objDCT.display_details ()

Выход:

Следующий вывод появится после выполнения вышеуказанного скрипта. Здесь были сгенерированы три результата путем создания объектов трех дочерних классов.

Заключение:

В супер() функция может использоваться только внутри дочернего класса для вызова конструктора и любого другого метода родительского класса. Использование этой функции было показано в этом руководстве на примере создания одно- и многоуровневого наследования. Я надеюсь, что цель использования этой функции в ООП будет ясна после прочтения этого руководства.

Лучшие приложения для сопоставления геймпадов для Linux
Если вам нравится играть в игры на Linux с помощью геймпада вместо стандартной системы ввода с клавиатуры и мыши, для вас есть несколько полезных прил...
Полезные инструменты для геймеров Linux
Если вам нравится играть в игры на Linux, скорее всего, вы использовали приложения и утилиты, такие как Wine, Lutris и OBS Studio, для улучшения игров...
Игры HD Remastered для Linux, ранее не выпускавшиеся для Linux
Многие разработчики и издатели игр придумывают HD-ремастеры старых игр, чтобы продлить жизнь франшизы, порадовать фанатов, требующих совместимости с с...