Переопределение в Python - Функция и правила переопределения

Содержание:

Anonim

Введение в Переопределение в Python

В Overriding в Python объектно-ориентированное программирование, класс, который объявлен изначально, называется родительским классом. тот, который объявлен после этого, называется подклассом или дочерним классом. В технике переопределения в Python подкласс предоставляется конкретным типом реализации, в котором родительский элемент класса переопределяется элементом в подклассе. Согласно этой методике, сущность, объявленная в подклассе, должна быть похожа по имени, параметру, аргументам с родительским классом. Поэтому в этом случае подкласс, как говорят, переопределяет родительский класс.

Функция переопределения в Python

Основным типом переопределения в Python является переопределение метода. здесь метод, объявленный в родительском классе, будет переопределен в подклассе. Синтаксическое представление переопределения метода представлено ниже,

Синтаксис:

class parent_class:
def overriding_method(self):
class Child_class:
def overriden_method(self):
obj1 = parent_class()
obj2 = Child_class()
obj1.overriding_method()
obj2.overriden_method()

Пример № 1

class parent_class
def __init__(self, Lower_Case, Upper_Case):
self.Lower_Case = Lower_Case
self.Upper_Case = Upper_Case
def attribute_finder_method(self):
print('- - - - - - Overriding method output - - - - -')
print(' - - - - PRINT ON ALPHABETS - - - - - ')
print(' Collection used for variable1 : ', type(Lower_Case))
print(' Collection used for variable2 : ', type(Upper_Case))
print(' Lower case alphabets : ', len(Lower_Case), '--- Values -->', Lower_Case)
print(' Upper case alphabets : ', len(Upper_Case), '--- Values -->', Upper_Case)
print(' ')
print(' ')
print(' ')
class child_class:
def __init__(self, Prime_Numbers):
self.Prime_Numbers = Prime_Numbers
def attribute_finder_method(self):
print('- - - - - - Overriden method output - - - - -')
print(' - - - - PRINT ON PRIME NUMBERS - - - - - ')
print(' Collection used for variable3 : ', type(Prime_Numbers))
print(' Lower case alphabets : ', len(Prime_Numbers), '--- Values -->', Prime_Numbers)
Lower_Case = ( ' a ', ' b ', ' c ', ' d ', ' e ', ' f ', ' g ', ' h ', ' i ', ' j ', ' k ', ' l ', ' m ', ' n ', ' o ', ' p ', ' q ', ' r ', ' s ', ' t ', ' u ', ' v ', ' w ', ' x ', ' y ', ' z ' ) Upper_Case = ( ' A ', ' B ', ' C ', ' D ', ' E ', ' F ', ' G ', ' H ', ' I ', ' J ', ' K ', ' L ', ' M ', ' N ', ' O ', ' P ', ' Q ', ' R ', ' S ', ' T ', ' U ', ' V ', ' W ', ' X ', ' Y ', ' Z ' ) Prime_Numbers = ( ' 1 ', ' 3 ', ' 5 ', ' 7 ', ' 11 ', ' 13 ', ' 17 ', ' 19 ', ' 29 ', ' 31 ', ' 37 ', ' 41 ', ' 43 ', ' 47 ', ' 53 ', ' 59 ', ' 61 ', ' 67 ', ' 71 ', ' 73 ', ' 79 ', ' 83 ', ' 89 ', ' 97 ') object1 = parent_class(Lower_Case, Upper_Case)
object1.attribute_finder_method()
object2 = child_class(Prime_Numbers)
object2.attribute_finder_method()

Выход:

Объяснение:

  • Вышеприведенная программа использует три списка, два из которых содержат строчные и прописные буквы, третий - простые числа от 0 до 100.
  • Функциональность программы разработана таким образом, что атрибуты и содержимое этих списков должны быть напечатаны. В таком случае для этой цели используются два разных класса. Родительский класс обрабатывает все алфавиты коллекции, тогда как дочерний класс обрабатывает коллекцию простых чисел.
  • Мы можем заметить, что функция attribute_finder_method () объявлена ​​как часть обоих классов. В родительском классе этот метод содержит обработку атрибутов для алфавитов, а в дочернем классе - обработку атрибутов для простых чисел. Важной спецификацией является то, что имя функции одинаково в обоих объявленных классах.
  • Таким образом, когда объект создается для родительского класса, тогда этот объект будет способен инициировать вызов функции для метода в родительском классе, а с другой стороны, объект, созданный для дочернего класса, будет способен инициировать вызов функции для метода в дочернем классе., Это означает, когда 'объект2. Атрибут attribute_finder_method () 'вызывает метод для дочернего класса даже при наличии того же метода в родительском классе. Таким образом, это явно оправдывает переопределение метода дочернего класса над объявленным родительским классом, усваивая тот факт, что подкласс предоставлен конкретному типу реализации, в котором элемент родительского класса переопределяется элементом в подклассе.

Пример № 2

#!/usr/bin/evn python
# Define a class as 'Individual' #
class Individual:
# Constructor#1 #
def __init__(self):
self.Student_Name = input( " Enter Name of the student : " )
self.Student_age = input( " Enter age of the student : " )
self.Student_gender = input( " Enter gender of the student : " )
# Method
def display(self):
print( " \n \n Enter Name of the student : ", self.Student_Name )
print( " Enter age of the student : ", self.Student_age )
print( " Enter gender of the student : ", self.Student_gender )
# Define a class as 'Evaluated_Marks' #
class Evaluated_Marks:
# Constructor#2 #
def __init__(self):
self.stuClass = input( " Class of the student : " )
print( " Evaluated Marks per subject : " )
self.literature = int(input( " Mark in Literature subject : " ))
self.math = int(input( " Mark in Math subject : " ))
self.biology = int(input( " Mark in Biology subject : " ))
self.physics = int(input( " Mark in Physics subject : " ))
# Method
def display(self):
print( " Study in : ", self.stuClass)
print( " Total Evaluated_Marks : ", self.literature + self.math + self.biology + self.physics)
class student(Individual, Evaluated_Marks):
def __init__(self):
# Call ' Individual ' super class constructor
Individual.__init__(self)
# Call ' Evaluated_Marks ' superclass constructor
Evaluated_Marks.__init__(self)
def result(self):
# Call method of class 'Individual'
Individual.display(self)
# Call method of class 'Evaluated_Marks'
Evaluated_Marks.display(self)
# Objects of class 'student' #
Student1 = student()
Student2 = student()
print(" ")
print( "Note: The instances get initialized with the given values Successfully " )

Выход:

Объяснение:

Здесь метод display () наследуется и переопределяется, что снова достигает концепции переопределения метода.

Правила переопределения в Python

  • Переопределенный метод должен иметь то же имя, что и метод, указанный в родительском классе.
  • статические методы не могут быть переопределены
  • Конечные методы не могут быть переопределены
  • Синхронизированный модификатор не влияет на правила переопределения.

Вывод

Концепция переопределения отражает несколько реализаций одного и того же класса. здесь синхронизированный модификатор не влияет на правила переопределения. Прежде всего, он очень глубоко определяет поведение участвующего класса. эти случаи делают концепцию переопределения очень важной в мире питонов.

Рекомендуемые статьи

Это руководство по переопределению в Python. Здесь мы обсуждаем введение, функцию переопределения и правила переопределения в Python. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше -

  1. Особенности Python
  2. Переопределение в JavaScript
  3. PHP компилятор
  4. Сессии в PHP
  5. Руководство по статическому методу в PHP
  6. Примеры статического метода JavaScript