logo

Python OOPs jēdzieni

Objektorientētā programmēšana ir Python pamatjēdziens, kas sniedz izstrādātājiem iespēju veidot modulāras, apkopjamas un mērogojamas lietojumprogrammas. Izprotot OOP pamatprincipus — klases, objektus, pārmantošanu, iekapsulēšanu, polimorfismu un abstrakciju — programmētāji var pilnībā izmantot Python OOP iespēju potenciālu, lai izstrādātu elegantus un efektīvus sarežģītu problēmu risinājumus.

Kas ir objektorientētā programmēšana Python?

Python objektorientētā programmēšana (OOP) ir programmēšanas paradigma, kas programmēšanā izmanto objektus un klases. Tā mērķis ir ieviest programmā reālās pasaules entītijas, piemēram, mantošanu, polimorfismus, iekapsulēšanu utt. Python objektorientētās programmēšanas (OOP) vai oops koncepciju galvenais jēdziens ir saistīt datus un funkcijas, kas darbojas kopā kā viena vienība, lai neviena cita koda daļa nevarētu piekļūt šiem datiem.



int virknē

OOPs jēdzieni Python

  • Klase Python valodā
  • Objekti Python
  • Polimorfisms Python valodā
  • Iekapsulēšana Python
  • Mantojums Python valodā
  • Datu abstrakcija Python
Python OOPs

Python OOPs jēdzieni

Python klase

Klase ir objektu kolekcija. Klase satur rasējumus vai prototipu, no kura tiek izveidoti objekti. Tā ir loģiska entītija, kas satur dažus atribūtus un metodes.

Lai saprastu vajadzību izveidot klasi, apsveriet piemēru, pieņemsim, ka vēlaties izsekot to suņu skaitam, kuriem var būt dažādi atribūti, piemēram, šķirne un vecums. Ja tiek izmantots saraksts, pirmais elements varētu būt suņa šķirne, bet otrais elements varētu attēlot tā vecumu. Pieņemsim, ka ir 100 dažādi suņi, tad kā jūs zināt, kuram elementam ir jābūt? Ko darīt, ja vēlaties šiem suņiem pievienot citas īpašības? Tam trūkst organizācijas, un tā ir precīza nodarbību nepieciešamība.



Daži punkti Python klasē:

  • Klases tiek veidotas pēc atslēgvārdu klases.
  • Atribūti ir mainīgie, kas pieder klasei.
  • Atribūti vienmēr ir publiski, un tiem var piekļūt, izmantojot punktu (.) operatoru. Piem.: Mana klase.Mans atribūts

Klases definīcijas sintakse:

class ClassName: # Statement-1 . . . # Statement-N>

Tukšas klases izveide programmā Python

Iepriekš minētajā piemērā mēs esam izveidojuši klasi ar nosaukumu Suns, izmantojot klases atslēgvārdu.



Python
# Python3 program to # demonstrate defining # a class class Dog: pass>

Python objekti

Objektorientētajā programmēšanā Python objekts ir entītija, kurai ir ar to saistīts stāvoklis un uzvedība. Tas var būt jebkurš reāls objekts, piemēram, pele, tastatūra, krēsls, galds, pildspalva utt. Veseli skaitļi, virknes, peldošā komata skaitļi, pat masīvi un vārdnīcas ir objekti. Precīzāk, jebkurš vesels skaitlis vai atsevišķa virkne ir objekts. Skaitlis 12 ir objekts, virkne Sveiki, pasaule ir objekts, saraksts ir objekts, kurā var būt citi objekti utt. Jūs visu laiku esat izmantojis objektus un, iespējams, to pat neapzināties.

Objekts sastāv no:

  • Valsts: To attēlo objekta atribūti. Tas atspoguļo arī objekta īpašības.
  • Uzvedība: To attēlo objekta metodes. Tas arī atspoguļo objekta reakciju uz citiem objektiem.
  • Identitāte: Tas piešķir objektam unikālu nosaukumu un ļauj vienam objektam mijiedarboties ar citiem objektiem.

Lai saprastu stāvokli, uzvedību un identitāti, ņemsim klases suņa piemēru (skaidrots iepriekš).

  • Identitāti var uzskatīt par suņa vārdu.
  • Stāvokli vai īpašības var uzskatīt par suņa šķirni, vecumu vai krāsu.
  • Uzvedību var uzskatīt par to, vai suns ēd vai guļ.

Objekta izveide

Tādējādi tiks izveidots iepriekš definētās klases Suns objekts ar nosaukumu obj. Pirms iedziļināties objektos un klasēs, ļaujiet mums saprast dažus pamata atslēgvārdus, kas tiks izmantoti, strādājot ar objektiem un klasēm.

Python3
obj = Dog()>

Pats Python

  1. Klases metodēm ir jābūt papildu pirmajam parametram metodes definīcijā. Mēs nesniedzam vērtību šim parametram, kad mēs izsaucam metodi, Python to nodrošina
  2. Ja mums ir metode, kas neizmanto argumentus, tad mums joprojām ir jābūt vienam argumentam.
  3. Tas ir līdzīgs šim rādītājam C++ un šai atsaucei Java.

Kad šī objekta metodi saucam par myobject.method(arg1, arg2), Python to automātiski pārvērš par MyClass.method(myobject, arg1, arg2) — tas ir viss īpašais es.

Piezīme: Lai iegūtu papildinformāciju, skatiet sevi Python klasē

Python __init__ metode

The __init__ metode ir līdzīgs C++ un Java konstruktoriem. Tas tiek palaists, tiklīdz tiek izveidots klases objekts. Metode ir noderīga, lai veiktu jebkuru inicializāciju, ko vēlaties veikt ar savu objektu. Tagad definēsim klasi un izveidosim dažus objektus, izmantojot self un __init__ metodi.

Klases un objekta izveide ar klases un instances atribūtiem

Python3
class Dog: # class attribute attr1 = 'mammal' # Instance attribute def __init__(self, name): self.name = name # Driver code # Object instantiation Rodger = Dog('Rodger') Tommy = Dog('Tommy') # Accessing class attributes print('Rodger is a {}'.format(Rodger.__class__.attr1)) print('Tommy is also a {}'.format(Tommy.__class__.attr1)) # Accessing instance attributes print('My name is {}'.format(Rodger.name)) print('My name is {}'.format(Tommy.name))>

Izvade
Rodger is a mammal Tommy is also a mammal My name is Rodger My name is Tommy>

Klašu un objektu izveide ar metodēm

Šeit Suns klase ir definēta ar diviem atribūtiem:

  • attr1 ir klases atribūts, kas iestatīts uz vērtību zīdītājs . Klases atribūtus koplieto visi klases gadījumi.
  • __init__ ir īpaša metode (konstruktors), kas inicializē Dog klases gadījumu. Tam nepieciešami divi parametri: self (attiecas uz izveidoto instanci) un nosaukums (kas atspoguļo suņa vārdu). Nosaukuma parametrs tiek izmantots, lai katram Dog gadījumam piešķirtu nosaukuma atribūtu.
    Runāšanas metode ir noteikta suņu klasē. Šī metode izdrukā virkni, kas ietver suņa instances nosaukumu.

Vadītāja kods sākas, izveidojot divus suņu klases gadījumus: Rodžers un Tomijs. Katrai instancei tiek izsaukta metode __init__, lai inicializētu to nosaukuma atribūtus ar norādītajiem nosaukumiem. Runāšanas metode tiek izsaukta abos gadījumos (Rodger.speak() un Tommy.speak()), liekot katram sunim izdrukāt paziņojumu ar savu nosaukumu.

Python3
class Dog: # class attribute attr1 = 'mammal' # Instance attribute def __init__(self, name): self.name = name def speak(self): print('My name is {}'.format(self.name)) # Driver code # Object instantiation Rodger = Dog('Rodger') Tommy = Dog('Tommy') # Accessing class methods Rodger.speak() Tommy.speak()>

Izvade
My name is Rodger My name is Tommy>

Piezīme: Lai iegūtu papildinformāciju, skatiet Python klases un objekti

Kat timpf

Python mantojums

Python objektorientētajā programmēšanā mantošana ir vienas klases spēja atvasināt vai mantot rekvizītus no citas klases. Klasi, kas iegūst rekvizītus, sauc par atvasināto klasi vai atvasināto klasi, un klasi, no kuras tiek iegūti rekvizīti, sauc par bāzes klasi vai vecāku klasi. Mantojuma priekšrocības ir:

  • Tas labi atspoguļo reālās pasaules attiecības.
  • Tas nodrošina koda atkārtotu izmantošanu. Mums nav jāraksta viens un tas pats kods atkal un atkal. Turklāt tas ļauj mums pievienot klasei vairāk funkciju, to nemainot.
  • Tam ir pārejošs raksturs, kas nozīmē, ka, ja B klase manto no citas A klases, tad visas B apakšklases automātiski mantotu no A klases.

Mantojuma veidi

  • Vienotais mantojums : viena līmeņa mantošana ļauj atvasinātai klasei mantot raksturlielumus no viena vecāka klases.
  • Daudzlīmeņu mantošana: Daudzlīmeņu mantošana ļauj atvasinātajai klasei mantot rekvizītus no tiešās vecākklases, kas savukārt manto rekvizītus no savas vecākklases.
  • Hierarhiskā mantošana: Hierarhiskā līmeņa mantošana ļauj vairāk nekā vienai atvasinātai klasei mantot rekvizītus no vecākklases.
  • Vairāku mantojumu: Vairāku līmeņu mantošana ļauj vienai atvasinātai klasei mantot rekvizītus no vairāk nekā vienas bāzes klases.

Mantojums Python valodā

Iepriekš minētajā rakstā mēs esam izveidojuši divas klases, t.i., Persona (vecāku klase) un Darbinieks (Bērnu klase). Darbinieku klase manto no Personu klases. Mēs varam izmantot personu klases metodes, izmantojot darbinieku klasi, kā redzams displeja funkcijā iepriekš minētajā kodā. Pakārtotā klase var arī mainīt vecākklases uzvedību, kā redzams, izmantojot metodi Details ().

Python3
# Python code to demonstrate how parent constructors # are called. # parent class class Person(object): # __init__ is known as the constructor def __init__(self, name, idnumber): self.name = name self.idnumber = idnumber def display(self): print(self.name) print(self.idnumber) def details(self): print('My name is {}'.format(self.name)) print('IdNumber: {}'.format(self.idnumber)) # child class class Employee(Person): def __init__(self, name, idnumber, salary, post): self.salary = salary self.post = post # invoking the __init__ of the parent class Person.__init__(self, name, idnumber) def details(self): print('My name is {}'.format(self.name)) print('IdNumber: {}'.format(self.idnumber)) print('Post: {}'.format(self.post)) # creation of an object variable or an instance a = Employee('Rahul', 886012, 200000, 'Intern') # calling a function of the class Person using # its instance a.display() a.details()>

Izvade
Rahul 886012 My name is Rahul IdNumber: 886012 Post: Intern>

Piezīme: Lai iegūtu papildinformāciju, skatiet mūsu Mantojums Python valodā pamācība.

Pitonu polimorfisms

Objektorientētajā Python programmēšanas programmā polimorfisms vienkārši nozīmē daudzu formu esamību. Piemēram, mums ir jānosaka, vai konkrētā putnu suga lido vai nē, izmantojot polimorfismu, mēs to varam izdarīt, izmantojot vienu funkciju.

Polimorfisms Python valodā

Šis kods parāda Python ops mantojuma koncepciju un metodes ignorēšanu Python klasēs. Tas parāda, kā apakšklases var ignorēt to vecākklasē definētās metodes, lai nodrošinātu konkrētu uzvedību, vienlaikus pārmantojot citas metodes no vecākklases.

Python3
class Bird: def intro(self): print('There are many types of birds.') def flight(self): print('Most of the birds can fly but some cannot.') class sparrow(Bird): def flight(self): print('Sparrows can fly.') class ostrich(Bird): def flight(self): print('Ostriches cannot fly.') obj_bird = Bird() obj_spr = sparrow() obj_ost = ostrich() obj_bird.intro() obj_bird.flight() obj_spr.intro() obj_spr.flight() obj_ost.intro() obj_ost.flight()>

Izvade
There are many types of birds. Most of the birds can fly but some cannot. There are many types of birds. Sparrows can fly. There are many types of birds. Ostriches cannot fly.>

Piezīme: Lai iegūtu papildinformāciju, skatiet mūsu Polimorfisms Python valodā Apmācība.

Python iekapsulēšana

Python objektorientētajā programmēšanā iekapsulēšana ir viens no objektorientētās programmēšanas (OOP) pamatjēdzieniem. Tajā ir aprakstīta ideja par datu iesaiņošanu un metodes, kas darbojas ar datiem vienā vienībā. Tas ierobežo tiešu piekļuvi mainīgajiem lielumiem un metodēm un var novērst nejaušu datu pārveidošanu. Lai novērstu nejaušas izmaiņas, objekta mainīgo var mainīt tikai ar objekta metodi. Šāda veida mainīgie ir pazīstami kā privātie mainīgie.

Klase ir iekapsulēšanas piemērs, jo tajā ir iekapsulēti visi dati, kas ir dalībnieku funkcijas, mainīgie utt.

Iekapsulēšana Python

Iepriekš minētajā piemērā mēs esam izveidojuši mainīgo c kā privāto atribūtu. Mēs pat nevaram tieši piekļūt šim atribūtam un pat nevaram mainīt tā vērtību.

Python3
# Python program to # demonstrate private members # '__' double underscore represents private attribute.  # Private attributes start with '__'. # Creating a Base class class Base: def __init__(self): self.a = 'techcodeview.com' self.__c = 'techcodeview.com' # Creating a derived class class Derived(Base): def __init__(self): # Calling constructor of # Base class Base.__init__(self) print('Calling private member of base class: ') print(self.__c) # Driver code obj1 = Base() print(obj1.a) # Uncommenting print(obj1.c) will # raise an AttributeError # Uncommenting obj2 = Derived() will # also raise an AtrributeError as # private member of base class # is called inside derived class>

Izvade
techcodeview.com>

Piezīme: lai iegūtu vairāk informācijas, skatiet mūsu Iekapsulēšana Python Apmācība.

Datu abstrakcija

Tas slēpj no lietotāja nevajadzīgas koda detaļas. Arī tad, ja mēs nevēlamies izpaust sensitīvas mūsu koda ieviešanas daļas, un šeit tika iegūta datu abstrakcija.

Datu abstrakciju Python var panākt, izveidojot abstraktas klases.

Objektorientēta programmēšana Python | 2. kopa (datu slēpšana un objektu drukāšana)