Переосмислення в Python - Функція та правила переосмислення

Зміст:

Anonim

Вступ до перекриття в Python

У Overriding в Python об'єктно-орієнтоване програмування, клас, який оголошується спочатку, називається батьківським класом. той, що оголошується після цього, називається підкласом або дочірнім класом. У техніці Overriding в 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 ()' оголошена як частина обох class.і батьківському класі цей метод проводить обробку атрибутів для алфавітів, а в дочірньому класі він містить обробку атрибутів для простих чисел. суттєвою специфікацією є те, що ім'я функції однакове в обох оголошених класах.
  • Отже, коли об'єкт призначається для батьківського класу, тоді цей об'єкт буде здатний ініціювати виклик функції для методу в батьківському класі, а з іншого боку, об'єкт, ініційований для дочірнього класу, зможе ініціювати виклик функції для методу в дочірньому класі . Це означає, коли 'object2. 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