Python

Наследяване на Python

Наследяване на Python

Python е обектно-ориентиран език за програмиране. В обектно-ориентиран език за програмиране ние създаваме класовете и изпълняваме предвидената функционалност. Наследяването е основната характеристика на обектно-ориентираните програмни езици. Наследяването може да се определи като способността на един клас да наследи всички функции и свойства на друг клас. Наследството по същество позволява да се разширят свойствата на съществуващ клас. Наследяването се използва с двете основни понятия:

  1. Родителски клас или основен клас
  2. Детски клас или производен клас

Родителският клас е класът, който позволява да бъдат наследени други класове. Нарича се още базовия клас. Класът Child или производният клас е този клас, който наследява всички свойства и функции на друг клас. Наследяването насърчава няколко предимства, т.е.д., това е представянето на феномена на наследяване в реалния свят. Той насърчава повторната употреба на кода. Ако функция е дефинирана в един клас, другият клас може да наследи този клас и да използва всички съществуващи функции. Няма нужда да пишете същия код отново и отново за изпълнение на подобни задачи. Наследяването се прилага на множество нива. Например, ако клас B се наследи от A, а клас C се наследи от клас B, тогава клас C има всички свойства на клас B, както и клас A. Синтаксисът на наследяване е както следва:

Клас ParentClass:
Подробности за изпълнението на родителския клас
клас ChildClass:
Подробности за изпълнението на детския клас

Въпреки че дъщерният клас има достъп до всички функции и функции на родителския клас, той обаче може да добави и своите нови функции и функции.

Тази статия описва и обхваща всички аспекти на наследяването на Python.

Внедряване на наследство в Python

Наследяването може да се приложи в много ситуации. Да предположим, че изграждате софтуерна система за университет. Той може да се състои от множество заинтересовани страни като ученици, учители, персонал и др. Така че всеки човек има име, възраст, имейл и други общи свойства. Не е необходимо да декларирате всички свойства във всеки клас поотделно. Можем да направим клас на човек и всички класове на заинтересованите страни могат да наследят всички общи свойства и функции от класа на човека. В този случай няма нужда да пишете общите свойства във всеки клас отново и отново. По същия начин можем да разгледаме клас животни. На този свят има стотици видове животни. Всички животни ядат, спят и имат някои видове. Тази концепция може да се приложи и чрез наследяване.

Нека да разгледаме животното като супер клас и да приложим наследството. В дадения по-долу пример създадохме един клас животни. Класът животни е родителският клас. Освен това създадохме класовете Dog и Cat, които наследяват свойствата и функциите на класа животни. Ключовата дума pass се използва в дъщерния клас, когато не трябва да прилагаме разширена функционалност в дъщерния клас.

#creating родителски клас
клас Животно:
# инициализация функция
# инициализиране на името на животното и вида на вида
def __init __ (self, name, specie_type):
себе си.име = име
себе си.specie_type = specie_type
#a функция за отпечатване на името на животното
def printname (самостоятелно):
print ("Името на животното е:", самостоятелно.име)
#a функция за отпечатване на вида животински вид
def printspecie (самостоятелно):
print ("Типът на вида е:", самостоятелно.специфичен_тип)
# създаване на клас куче като детски клас от клас животни
клас Куче (животно):
# без разширение или модификация
мине
#now клас кучета имат достъп до всички функции и свойства на клас животни
#creating обект клас куче
dogObj = Куче ("Куче", "месоядно животно")
dogObj.име на печат ()
dogObj.printspecie ()
#creating the cat class as child class of animal class
клас Котка (животно):
# функцията за инициализация на клас котки
def __init __ (самостоятелно):
#calling и използване на функцията за инициализиране на клас животни
Животно.__init __ (себе си, "котка", "месояден бозайник")
#now клас котки имат достъп до всички функции и свойства на клас животни
#creating обекта клас на котка
catObj = Cat ()
catObj.име на печат ()
catObj.printspecie ()

Изход

The „Животно.__init __ (себе си, „котка“, „месояден бозайник“) “ call е функцията за инициализация на класа Animal.

Функцията супер ()

Python предоставя вградена функция super () за наследяване на всички свойства и функции на родителския клас. Когато използваме функцията super (), няма нужда да споменаваме името на родителския клас, както го направихме в „Животно.__init __ (себе си, „котка“, „месояден бозайник“) “ но функцията super () автоматично сочи към родителския клас. Нека използваме супер функцията.

#creating родителски клас
клас Животно:
# инициализация функция
# инициализиране на името на животното и вида на вида
def __init __ (self, name, specie_type):
себе си.име = име
себе си.specie_type = specie_type
#a функция за отпечатване на името на животното
def printname (самостоятелно):
print ("Името на животното е:", самостоятелно.име)
#a функция за отпечатване на вида животински вид
def printspecie (самостоятелно):
print ("Типът на вида е:", самостоятелно.специфичен_тип)
# създаване на клас куче като детски клас от клас животни
клас Куче (животно):
# използвайки функция super ()
def __init __ (self, name, specie_type):
супер ().__init __ (име, специфичен_тип)
#now клас кучета имат достъп до всички функции и свойства на клас животни
#creating обект клас куче
dogObj = Куче ("Куче", "месоядно животно")
dogObj.име на печат ()
dogObj.printspecie ()
#creating the cat class as child class of animal class
клас Котка (животно):
# функцията за инициализация на клас котки
# използвайки функция super ()
def __init __ (self, name, specie_type):
супер ().__init __ (име, специфичен_тип)
#now клас котки имат достъп до всички функции и свойства на клас животни
#creating на обекта клас на котка
catObj = Котка ("котка", "месояден бозайник")
catObj.име на печат ()
catObj.printspecie ()

Изход

Сега нека добавим още някои функционалности в детските класове. Всеки клас наследява общите свойства и функции от родителския клас, но дъщерният клас може да има някакъв допълнителен клас, който е предназначен за този конкретен клас. Сега нека създадем някои допълнителни свойства и функции в класа на кучетата и котките.

#creating родителски клас
клас Животно:
# инициализация функция
# инициализиране на името на животното и вида на вида
def __init __ (self, name, specie_type):
себе си.име = име
себе си.specie_type = specie_type
#a функция за отпечатване на името на животното
def printname (самостоятелно):
print ("Името на животното е:", самостоятелно.име)
#a функция за отпечатване на вида животински вид
def printspecie (самостоятелно):
print ("Типът на вида е:", самостоятелно.специфичен_тип)
# създаване на клас куче като детски клас от клас животни
клас Куче (животно):
# използвайки функция super ()
#pet име е новодобавена функционалност
def __init __ (self, name, specie_type, pet_name):
супер ().__init __ (име, специфичен_тип)
себе си.pet_name = pet_name
#creating a new function
def printpetname (самостоятелно):
print ("Името на домашния любимец е:", самостоятелно.име на домашен любимец)
#now клас кучета имат достъп до всички функции и свойства на клас животни
#creating обект клас куче
dogObj = Куче ("Куче", "месоядно животно", "Макс")
dogObj.име на печат ()
dogObj.printspecie ()
dogObj.printpetname ()
#creating the cat class as child class of animal class
клас Котка (животно):
# функцията за инициализация на клас котки
# използвайки функция super ()
#adding свойства на храна и име на домашни любимци
def __init __ (self, name, specie_type, food, pet_name):
супер ().__init __ (име, специфичен_тип)
себе си.храна = храна
себе си.pet_name = pet_name
#new функция за достъп до информация за храна
def printfood (самостоятелно):
print ("Котката харесва:", самостоятелно.храна)
#new функция за име на домашен любимец
def printpetname (самостоятелно):
print ("Името на домашния любимец е:", самостоятелно.име на домашен любимец)
#now клас котки имат достъп до всички функции и свойства на клас животни
#creating обекта клас на котка
catObj = Котка ("котка", "месоядни бозайници", "бисквити", "маргаритка")
catObj.име на печат ()
catObj.printspecie ()

Изход

Функциите, заменящи

Функцията заменяне е важната концепция при наследяването. Функция се нарича заменена функция, ако името на функцията е еднакво в родителски и дъщерни класове, но изпълнението или функционалността на функцията е различна във всеки клас. Нека да видим примера на заменена функция в класа Animal. В дадения по-долу пример имаме функция за хранене в класовете на животни и в детските класове (Куче и Котка). Името на функцията е същото в класовете, но изпълнението е различно.

#creating родителски клас
клас Животно:
def яде (самостоятелно):
print ("Всички животни ядат храна")
#creating object
animalObj = Animal ()
#calling функция
animalObj.Яжте()
#creating class class
клас Куче (животно):
def яде (самостоятелно):
print ("Кучето яде месо")
#creating object
dogObj = Куче ()
#calling функция
dogObj.Яжте()
клас Котка (животно):
def яде (самостоятелно):
print ("Котката яде бисквити и някаква специална храна")
#creating object
catObj = Cat ()
#calling функция
catObj.Яжте()

Изход

Заключение

Наследяването е една от основните концепции на обектно-ориентираните програмни езици. Използвайки наследяване, ние създаваме дъщерни класове, които наследяват всички функции и свойства на родителския клас. Наследяването насърчава повторното използване на кода. Тази статия обяснява наследяването в Python с примери.

Полезни инструменти за геймърите на Linux
Ако искате да играете игри на Linux, има вероятност да сте използвали приложения и помощни програми като Wine, Lutris и OBS Studio, за да подобрите иг...
HD Remastered Games за Linux, които никога преди не са имали издание на Linux
Много разработчици и издатели на игри излизат с HD ремастер на стари игри, за да удължат живота на франчайза, моля феновете, които искат съвместимост ...
Как да използвам AutoKey за автоматизиране на Linux игри
AutoKey е програма за автоматизация на настолни компютри за Linux и X11, програмирана в Python 3, GTK и Qt. Използвайки неговата функционалност за скр...