Objektno usmerjeno programiranje je temeljni koncept v Pythonu, ki razvijalcem omogoča izdelavo modularnih, vzdržljivih in razširljivih aplikacij. Z razumevanjem temeljnih načel OOP – razredov, objektov, dedovanja, enkapsulacije, polimorfizma in abstrakcije – lahko programerji izkoristijo ves potencial zmogljivosti OOP Pythona za oblikovanje elegantnih in učinkovitih rešitev za kompleksne probleme.
Kaj je objektno usmerjeno programiranje v Pythonu?
V Pythonu je objektno usmerjeno programiranje (OOP) paradigma programiranja, ki pri programiranju uporablja objekte in razrede. V programiranje želi implementirati entitete iz resničnega sveta, kot so dedovanje, polimorfizmi, inkapsulacija itd. Glavni koncept objektno usmerjenega programiranja (OOP) ali konceptov oops v Pythonu je povezati podatke in funkcije, ki delujejo skupaj kot eno samo enoto, tako da noben drug del kode ne more dostopati do teh podatkov.
delni derivat lateksa
Koncepti OOP v Pythonu
- Razred v Pythonu
- Objekti v Pythonu
- Polimorfizem v Pythonu
- Enkapsulacija v Pythonu
- Dedovanje v Pythonu
- Abstrakcija podatkov v Pythonu

Koncepti Python OOP
Razred Python
Razred je zbirka predmetov. Razred vsebuje načrte ali prototip, iz katerega so predmeti ustvarjeni. Je logična entiteta, ki vsebuje nekaj atributov in metod.
Da bi razumeli potrebo po ustvarjanju razreda, razmislimo o primeru, recimo, da želite slediti številu psov, ki imajo lahko različne lastnosti, kot sta pasma in starost. Če se uporablja seznam, je lahko prvi element pasma psa, medtem ko drugi element lahko predstavlja njegovo starost. Recimo, da obstaja 100 različnih psov, kako bi potem vedeli, kateri element naj bi bil kateri? Kaj pa, če bi želeli tem psom dodati druge lastnosti? Temu manjka organizacija in to je natančna potreba po razredih.
Nekaj točk o razredu Python:
- Razredi so ustvarjeni s ključnimi besedami class.
- Atributi so spremenljivke, ki pripadajo razredu.
- Atributi so vedno javni in do njih lahko dostopate z operatorjem pika (.). Npr.: Myclass.Myattribute
Sintaksa definicije razreda:
class ClassName: # Statement-1 . . . # Statement-N>
Ustvarjanje praznega razreda v Pythonu
V zgornjem primeru smo ustvarili razred z imenom Dog s ključno besedo class.
Python
# Python3 program to # demonstrate defining # a class class Dog: pass>
Predmeti Python
V objektno usmerjenem programiranju Python je objekt entiteta, ki ima stanje in vedenje povezano z njim. To je lahko kateri koli predmet iz resničnega sveta, kot je miška, tipkovnica, stol, miza, pero itd. Cela števila, nizi, števila s plavajočo vejico, celo polja in slovarji so vsi predmeti. Natančneje, vsako posamezno celo število ali kateri koli posamezen niz je predmet. Število 12 je predmet, niz Hello, world je predmet, seznam je objekt, ki lahko vsebuje druge predmete itd. Ves čas uporabljate predmete in se tega morda niti ne zavedate.
Objekt je sestavljen iz:
- Država: Predstavljajo ga atributi predmeta. Odraža tudi lastnosti predmeta.
- Vedenje: Predstavljajo ga metode objekta. Odraža tudi odziv predmeta na druge predmete.
- Identiteta: Predmetu daje edinstveno ime in omogoča interakcijo enega predmeta z drugimi predmeti.
Za razumevanje stanja, vedenja in identitete vzemimo primer razrednega psa (razloženo zgoraj).
- Identiteta se lahko obravnava kot ime psa.
- Stanje ali lastnosti se lahko obravnavajo kot pasma, starost ali barva psa.
- Vedenje se lahko upošteva glede na to, ali pes jé ali spi.
Ustvarjanje predmeta
To bo ustvarilo objekt z imenom obj zgoraj definiranega razreda Dog. Preden se poglobimo v predmete in razrede, nam dovolite, da razumemo nekaj osnovnih ključnih besed, ki se bodo uporabljale pri delu s predmeti in razredi.
Python3 obj = Dog()>
Sam Python
- Metode razreda morajo imeti dodatni prvi parameter v definiciji metode. Temu parametru ne podamo vrednosti, ko pokličemo metodo, zagotovi jo Python
- Če imamo metodo, ki ne sprejema argumentov, moramo še vedno imeti en argument.
- To je podobno temu kazalcu v C++ in tej referenci v Javi.
Ko pokličemo metodo tega predmeta kot myobject.method(arg1, arg2), Python to samodejno pretvori v MyClass.method(myobject, arg1, arg2) – to je vse, o čemer govori poseben jaz.
Opomba: Za več informacij glejte self v razredu Python
Metoda Python __init__
The metoda __init__ je podoben konstruktorjem v C++ in Javi. Zažene se takoj, ko se objekt razreda instancira. Metoda je uporabna za kakršno koli inicializacijo, ki jo želite izvesti s svojim objektom. Zdaj pa definirajmo razred in ustvarimo nekaj objektov z uporabo metode self in __init__.
Ustvarjanje razreda in predmeta z atributi razreda in primerka
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))>
Izhod
Rodger is a mammal Tommy is also a mammal My name is Rodger My name is Tommy>
Ustvarjanje razredov in objektov z metodami
Tukaj je razred Dog definiran z dvema atributoma:
- attr1 je atribut razreda, nastavljen na vrednost sesalec . Atribute razreda si delijo vsi primerki razreda.
- __init__ je posebna metoda (konstruktor), ki inicializira primerek razreda Dog. Potrebuje dva parametra: self (ki se nanaša na primerek, ki se ustvarja) in name (ki predstavlja ime psa). Parameter imena se uporablja za dodelitev atributa imena vsakemu primerku psa.
Metoda speak je definirana znotraj razreda Dog. Ta metoda natisne niz, ki vključuje ime primerka psa.
Koda gonilnika se začne z ustvarjanjem dveh primerkov razreda Dog: Rodger in Tommy. Metoda __init__ se kliče za vsak primerek, da inicializira svoje atribute imena s podanimi imeni. Metoda speak se pokliče v obeh primerih (Rodger.speak() in Tommy.speak()), kar povzroči, da vsak pes natisne izjavo s svojim imenom.
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()>
Izhod
My name is Rodger My name is Tommy>
Opomba: Za več informacij glejte Razredi in objekti Python
f filmi
Python dedovanje
V objektno usmerjenem programiranju Python je dedovanje zmožnost enega razreda, da izpelje ali podeduje lastnosti drugega razreda. Razred, ki izpeljuje lastnosti, se imenuje izpeljani razred ali podrejeni razred, razred, iz katerega so lastnosti izpeljane, pa se imenuje osnovni razred ali nadrejeni razred. Prednosti dedovanja so:
- Dobro predstavlja odnose v resničnem svetu.
- Zagotavlja ponovno uporabnost kode. Ni nam treba znova in znova pisati iste kode. Prav tako nam omogoča, da razredu dodamo več funkcij, ne da bi ga spreminjali.
- Po naravi je prehoden, kar pomeni, da če razred B podeduje od drugega razreda A, potem vsi podrazredi B samodejno podedujejo razred A.
Vrste dedovanja
- Enotno dedovanje : Enonivojsko dedovanje omogoča izpeljanemu razredu, da podeduje značilnosti od enostarševskega razreda.
- Večnivojsko dedovanje: Večnivojsko dedovanje omogoča izpeljanemu razredu, da podeduje lastnosti neposrednega nadrejenega razreda, ta pa deduje lastnosti svojega nadrejenega razreda.
- Hierarhično dedovanje: Dedovanje na hierarhični ravni omogoča več kot enemu izpeljanemu razredu, da podeduje lastnosti nadrejenega razreda.
- Večkratno dedovanje: Večnivojsko dedovanje omogoča, da en izpeljan razred podeduje lastnosti iz več kot enega osnovnega razreda.
Dedovanje v Pythonu
V zgornjem članku smo ustvarili dva razreda, tj. Oseba (starševski razred) in Zaposleni (otroški razred). Razred Employee deduje razred Person. Uporabimo lahko metode razreda osebe prek razreda zaposlenih, kot je razvidno iz funkcije prikaza v zgornji kodi. Podrejeni razred lahko tudi spremeni vedenje nadrejenega razreda, kot je razvidno iz metode podrobnosti().
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()>
Izhod
Rahul 886012 My name is Rahul IdNumber: 886012 Post: Intern>
Opomba: Za več informacij se obrnite na našo Dedovanje v Pythonu vadnica.
Polimorfizem Python
V objektno usmerjenem programskem Pythonu polimorfizem preprosto pomeni imeti veliko oblik. Na primer, ugotoviti moramo, ali dana vrsta ptic leti ali ne, z uporabo polimorfizma lahko to storimo z eno samo funkcijo.
Polimorfizem v Pythonu
Ta koda prikazuje koncept Python oops dedovanja in preglasitve metode v razredih Python. Prikazuje, kako lahko podrazredi preglasijo metode, definirane v njihovem nadrejenem razredu, da zagotovijo specifično vedenje, medtem ko še vedno podedujejo druge metode iz nadrejenega razreda.
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()>
Izhod
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.>
Opomba: Za več informacij se obrnite na našo Polimorfizem v Pythonu Vadnica.
Enkapsulacija Python
V objektno usmerjenem programiranju Python je enkapsulacija eden temeljnih konceptov objektno usmerjenega programiranja (OOP). Opisuje idejo ovijanja podatkov in metode, ki delujejo na podatkih znotraj ene enote. To postavlja omejitve pri neposrednem dostopu do spremenljivk in metod ter lahko prepreči nenamerno spreminjanje podatkov. Da bi preprečili nenamerno spremembo, lahko spremenljivko objekta spremenite samo z metodo objekta. Te vrste spremenljivk so znane kot zasebne spremenljivke.
Razred je primer enkapsulacije, saj enkapsulira vse podatke, ki so članske funkcije, spremenljivke itd.

Enkapsulacija v Pythonu
V zgornjem primeru smo ustvarili spremenljivko c kot zasebni atribut. Ne moremo niti neposredno dostopati do tega atributa in ne moremo niti spremeniti njegove vrednosti.
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>
Izhod
techcodeview.com>
Opomba: za več informacij se obrnite na našo Enkapsulacija v Pythonu Vadnica.
Abstrakcija podatkov
Pred uporabnikom skrije nepotrebne podrobnosti kode. Tudi ko ne želimo izdati občutljivih delov naše implementacije kode in je tu prišlo do abstrakcije podatkov.
Abstrakcijo podatkov v Pythonu je mogoče doseči z ustvarjanjem abstraktnih razredov.
Objektno usmerjeno programiranje v Pythonu | 2. sklop (skrivanje podatkov in tiskanje predmetov)