Увод у наслеђивање у Питхону

Питхон, који се може похвалити мулти-парадигмним могућностима, очито је прилагођен објектно оријентисаном стилу програмирања. И ниједан језик не може бити довољно смешан да захтева објектно оријентисану методологију без пружања подршке за наслеђивање, укључујући питхон. Питхон пружа изразито јединствен укус наследства, омогућавајући изузетно моћне операције које раније нису виђене. Иако долази са одређеним ограничењима, на пример, тренутно, обезбеђење путем обухвата за чланове класе постиже се само конвенцијом и није инхерентно део језика. Дакле, чланови који су проглашени приватним заправо су јавно доступни с неким модификацијама.

Синтакса класе

Синтакса за дефинисање изведене класе када треба наследити једну или више основних класа је следећа:

class derivedClassName(baseClassName(, …)):


Као што је приказано, изведена класа одређује списак основних класа одвојених зарезима из наслова дефиниције класе.

Класа Кухиња

Започнимо дефинирањем основне класе која се користи за све наше примјере:

class cuisine():
def __init__(self, type):
self.type = type
returncooked_cuisine = new cuisine('cooked')

Приказана база дефинира предложак предмета који се користи за дефинирање кухиња и биљежење да ли је то кухана кухиња или не. Такође има конструктор који се користи за прихватање врста кухиње. Касније се ствара тип типа „кувано“.

Врсте наследства Питхон-а

Постоје углавном две врсте наследства, чија комбинација даје сваку другу врсту.

1. Појединачно насљеђивање: Једна основна класа, наслијеђена од једне изведене класе. Ово је најједноставнија врста насљеђивања. Такође минимално могући. Изведена класа аутоматски позива конструктор основне класе.

2. Вишеструко насљеђивање: Више базних класа насљеђених од једне изведене класе. Конструктори основне класе позивају се редослиједом по коме су изведене класе.

Изведене врсте наследства

Комбиновање горе наведена два облика наследства може довести до следећих врста наследства:

1. Хијерархијско насљеђивање: Једна основна класа наслијеђена од више изведених класа. Свака изведена класа ће радити независно, али објекти деле варијабле класе у различитим класама.

2. Наслеђивање на више нивоа: изведена класа која служи као основна класа за другу изведену класу. У овом се случају рекурзивно позивају конструктори основне класе.

3. Хибридно наследство: Комбинација вишеструких случајева горе наведених врста наслеђивања. То би могло довести до било какве замисливе комбинације наставе.

Примери наследства Питхон-а

Испод су примери наследства Питхона:

1. Појединачно наслеђивање

Креирајмо класу која се зове Индијска кухиња која наслеђује класну кухињу.

class indian_cuisine(cuisine):
def __init__(self, type, place):
super().__init__(type)
self.place = place
returnindian_cuisine = new cuisine('cooked', 'India')

Као што је приказано у новој класи, створен је индиан_цусине који прихваћа параметар типа и позива се конструктор основне класе, пролазећи параметар. Додатно ствара ново променљиво место објекта . Ово се користи само у изведеној класи и није видљиво за објекте основне класе.

2. Хијерархијско наслеђивање

Креирајмо класу која се зове ИталианЦуисине која наслеђује класну кухињу:

class italian_cuisine(cuisine):
def __init__(self, type, place):
super().__init__(type)
self.place = place
returnitalian_cuisine = new cuisine('cooked', 'Italy')

Као што је приказано у новој класи, створен је италиан_цусине који прихваћа параметар типа и позива конструктор основне класе, пролазећи параметар. Додатно ствара ново променљиво место објекта . Ово се користи само у изведеној класи и није видљиво за објекте основне класе. Будући да две класе, индијска_кисина и италијанска_кужина наслеђују кухињу, постоји хијерархијско наслеђивање.

3. Вишеструко наслеђивање

Креирајмо класу која се зове ФинеДинеЦуисине која наслеђује из више класа.

class fine_dine_cuisine(indian_cuisine, italian_cuisine):
def __init__(self, type, place, portion_size):
super().__init__(type, place)
self.portion_size = portion_size
returnfine_dine_cuisine = new cuisine('cooked', 'India', 4)

Нова класа фине_дине_цуисине, наслеђује и од индијске и од италијанске кухиње, наслеђујући њихове параметре. Прихваћа тип параметара, мјесто и величину_ величине. врста и место се дају као аргументи конструкторима основне класе. парт_сизе је нови објектни параметар који се не дијели са основним класама.

Напомена о Дијамантном наслеђивању:

Будући да и индијанска кухиња и италијанска кухиња наслеђују класу кухиње, она формира класичан случај наслеђивања дијаманата, где су за изведену класу директно / индиректно присутни вишеструки примери основне класе. У већини језика, попут ц ++, то узрокује проблем или се користе апстрактне класе. Питхон, с друге стране, прецизира да је то сопствено иновативно решење. Наслеђује уобичајене методе и атрибуте само једном дајући предност разредима по редоследу наследства. Дакле, будући да се кухиња наслеђује два пута, предност се даје индијанској верзији кухиње, као што је прва наслеђена.

Напомена о члановима класе:

Сваки атрибут дефинисан у дефиницији класе, али не у оквиру функције, постаје атрибут класе и дели се на све инстанце класе. Стога, ако један објект промијени било који од ових атрибута класе, промјене су видљиве свим осталим инстанцама (било да се ради о истом предмету класе или изведеном објекту класе). Стога будите опрезни док користите атрибуте класе који нису присутни ни у једној дефиницији методе.

Закључак - Наслеђивање у Питхону

Питхон је још једном дефинисао врло флексибилан, сусретљив и моћан за употребу када је објектно оријентисана парадигма пожељна рута. То је дефинитивно концепт који сви могу користити и који би требали имати испод појаса. Ови концепти се користе за формирање грађевних блокова било којег скалабилног и одрживог дела софтвера.
Са овим основним уводом у наслеђивање на питхону, можете наставити са циљањем изјава о проблемима у стварном свету и видети колико сте добро дизајна у стању да смислите.

Препоручени чланци

Ово је водич за наследство Питхона. Овде смо расправљали о уводу, синтакси и врстама наследства Питхона, заједно са различитим примерима и његовом имплементацијом кода. Можете и да прођете кроз друге наше предложене чланке -

    1. Наслеђивање у Јави
    2. Шта је наслеђивање у програмирању?
    3. Наслеђивање у Ц #
    4. Превладавање у Јави
    5. Наслеђивање у ПХП-у
    6. Изјава апстрактне класе у Ц # са примером

Категорија: