Olio-ohjelmointi on Pythonin peruskonsepti, joka antaa kehittäjille mahdollisuuden rakentaa modulaarisia, ylläpidettäviä ja skaalautuvia sovelluksia. Ymmärtämällä OOP:n ydinperiaatteet – luokat, objektit, periytymisen, kapseloinnin, polymorfismin ja abstraktion – ohjelmoijat voivat hyödyntää Pythonin OOP-ominaisuuksien koko potentiaalia suunnitellakseen tyylikkäitä ja tehokkaita ratkaisuja monimutkaisiin ongelmiin.
Mikä on olio-ohjelmointi Pythonissa?
Pythonissa olio-ohjelmointi (OOPs) on ohjelmointiparadigma, joka käyttää ohjelmoinnissa objekteja ja luokkia. Sen tarkoituksena on toteuttaa ohjelmointiin todellisia kokonaisuuksia, kuten perinnöllisyys, polymorfismi, kapselointi jne. Pythonin olio-ohjelmoinnin (OOP) tai oops-konseptien pääkonsepti on sitoa tiedot ja funktiot, jotka toimivat yhdessä yhdeksi yksiköksi, jotta mikään muu koodin osa ei pääse käsiksi näihin tietoihin.
java int merkkijonoon
OOPs-konseptit Pythonissa
- Luokka Pythonissa
- Objektit Pythonissa
- Polymorfismi Pythonissa
- Kapselointi Pythonissa
- Perintö Pythonissa
- Tietojen abstraktio Pythonissa

Python OOPs -konseptit
Python-luokka
Luokka on kokoelma esineitä. Luokka sisältää suunnitelmat tai prototyypin, josta objektit luodaan. Se on looginen kokonaisuus, joka sisältää joitain määritteitä ja menetelmiä.
Ymmärtääksemme luokan luomisen tarpeen harkitaan esimerkkiä. Oletetaan, että halusit seurata niiden koirien määrää, joilla voi olla erilaisia ominaisuuksia, kuten rotu ja ikä. Jos käytetään luetteloa, ensimmäinen elementti voi olla koiran rotu ja toinen elementti sen ikää. Oletetaan, että on 100 erilaista koiraa, mistä sitten tiedät, minkä elementin pitäisi olla mikä? Entä jos haluaisit lisätä näihin koiriin muita ominaisuuksia? Tästä puuttuu organisointi ja se on täsmällinen tarve luokille.
Muutama pointti Python-luokasta:
- Luokat luodaan avainsanaluokan mukaan.
- Attribuutit ovat muuttujia, jotka kuuluvat luokkaan.
- Attribuutit ovat aina julkisia ja niitä voi käyttää piste (.) -operaattorilla. Esim.: Oma luokka.Oma attribuutti
Luokkamääritelmän syntaksi:
class ClassName: # Statement-1 . . . # Statement-N>
Tyhjän luokan luominen Pythonissa
Yllä olevassa esimerkissä olemme luoneet luokan nimeltä Koira käyttämällä luokan avainsanaa.
Python
# Python3 program to # demonstrate defining # a class class Dog: pass>
Python-objektit
Python-olioohjelmoinnissa objekti on entiteetti, johon liittyy tila ja käyttäytyminen. Se voi olla mikä tahansa reaalimaailman esine, kuten hiiri, näppäimistö, tuoli, pöytä, kynä jne. Kokonaisluvut, merkkijonot, liukulukuluvut, jopa taulukot ja sanakirjat ovat kaikki esineitä. Tarkemmin sanottuna mikä tahansa yksittäinen kokonaisluku tai mikä tahansa yksittäinen merkkijono on objekti. Numero 12 on objekti, merkkijono Hello, maailma on objekti, lista on objekti, joka voi sisältää muita objekteja ja niin edelleen. Olet käyttänyt esineitä koko ajan etkä ehkä edes tajua sitä.
Objekti koostuu:
- Osavaltio: Sitä edustavat kohteen attribuutit. Se heijastaa myös kohteen ominaisuuksia.
- Käyttäytyminen: Sitä edustavat objektin menetelmät. Se heijastaa myös kohteen reaktiota muihin esineisiin.
- Identiteetti: Se antaa objektille ainutlaatuisen nimen ja mahdollistaa yhden objektin vuorovaikutuksen muiden objektien kanssa.
Ymmärtääksemme tilan, käyttäytymisen ja identiteetin, otamme esimerkin luokkakoirasta (selvitetty yllä).
- Henkilöllisyyttä voidaan pitää koiran nimenä.
- Tila tai attribuutit voidaan katsoa koiran roduksi, ikään tai väriin.
- Käyttäytymistä voidaan arvioida sen mukaan, syökö vai nukkuuko koira.
Objektin luominen
Tämä luo objektin nimeltä obj edellä määritellystä Dog-luokasta. Ennen kuin sukeltaa syvälle esineisiin ja luokkiin, meidän on ymmärrettävä joitain perusavainsanoja, joita käytetään työskennellessäsi objektien ja luokkien kanssa.
Python 3 obj = Dog()>
Pythonin itse
- Luokkametodeissa on oltava ylimääräinen ensimmäinen parametri menetelmän määrittelyssä. Emme anna tälle parametrille arvoa, kun kutsumme menetelmää, Python tarjoaa sen
- Jos meillä on menetelmä, joka ei käytä argumentteja, meillä on silti oltava yksi argumentti.
- Tämä on samanlainen kuin tämä osoitin C++:ssa ja tämä viittaus Javassa.
Kun kutsumme tämän objektin menetelmää nimellä myobject.method(arg1, arg2), Python muuntaa sen automaattisesti MyClass.method(myobject, arg1, arg2) -muotoon – tässä on kaikki erityisestä itsestään kyse.
Huomautus: Lisätietoja on kohdassa itse Python-luokassa
Python __init__ -menetelmä
The __init__ -menetelmä on samanlainen kuin C++:n ja Javan konstruktorit. Se suoritetaan heti, kun luokan objekti on instantoitu. Menetelmä on hyödyllinen minkä tahansa alustuksen tekemiseen, jonka haluat tehdä objektillesi. Määritetään nyt luokka ja luodaan joitain objekteja käyttämällä self- ja __init__-metodia.
Luokan ja objektin luominen luokka- ja ilmentymämääritteillä
Python 3 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))> Lähtö
Rodger is a mammal Tommy is also a mammal My name is Rodger My name is Tommy>
Luokkien ja objektien luominen menetelmillä
Tässä Koira-luokka määritellään kahdella attribuutilla:
- attr1 on arvoon asetettu luokan attribuutti nisäkäs . Luokan attribuutit ovat yhteisiä kaikille luokan esiintymille.
- __init__ on erityinen menetelmä (konstruktori), joka alustaa Dog-luokan esiintymän. Se vaatii kaksi parametria: self (viittaen luotavaan ilmentymään) ja nimi (edustaa koiran nimeä). Nimiparametria käytetään nimimääritteen määrittämiseen kullekin Dogin esiintymälle.
Puhumenetelmä määritellään Koira-luokassa. Tämä menetelmä tulostaa merkkijonon, joka sisältää koiran esiintymän nimen.
Kuljettajakoodi alkaa luomalla kaksi Dog-luokan esiintymää: Rodger ja Tommy. __init__-metodia kutsutaan jokaiselle esiintymälle alustamaan nimimääritteensä annetuilla nimillä. Puhu-menetelmää kutsutaan molemmissa tapauksissa (Rodger.speak() ja Tommy.speak()), jolloin jokainen koira tulostaa lausunnon omalla nimellä.
Python 3 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()> Lähtö
My name is Rodger My name is Tommy>
Huomautus: Lisätietoja on kohdassa Python-luokat ja objektit
java ketjuttaa merkkijonoja
Pythonin perintö
Python-olioohjelmoinnissa periytyminen on yhden luokan kykyä johtaa tai periä ominaisuuksia toisesta luokasta. Ominaisuuksia johtavaa luokkaa kutsutaan johdetuksi luokaksi tai aliluokiksi, ja luokkaa, josta ominaisuudet johdetaan, kutsutaan perusluokaksi tai yläluokiksi. Perinnön edut ovat:
- Se edustaa hyvin todellisia ihmissuhteita.
- Se tarjoaa koodin uudelleenkäytettävyyden. Meidän ei tarvitse kirjoittaa samaa koodia uudestaan ja uudestaan. Sen avulla voimme myös lisätä ominaisuuksia luokkaan muuttamatta sitä.
- Se on luonteeltaan transitiivinen, mikä tarkoittaa, että jos luokka B perii toiselta luokalta A, kaikki B:n alaluokat perivät automaattisesti luokasta A.
Perinnön tyypit
- Yksittäinen perintö : Yksitasoinen periytyminen mahdollistaa johdetun luokan perivän ominaisuudet yhden vanhemman luokasta.
- Monitasoinen perintö: Monitasoinen periytyminen mahdollistaa johdetun luokan periä ominaisuuksia välittömästä yläluokasta, joka vuorostaan perii ominaisuudet emoluokkastaan.
- Hierarkkinen perintö: Hierarkkisen tason periytyminen mahdollistaa sen, että useampi kuin yksi johdettu luokka voi periä ominaisuuksia yläluokalta.
- Moniperintö: Monitasoinen periytyminen mahdollistaa sen, että yksi johdettu luokka voi periä ominaisuuksia useammasta kuin yhdestä perusluokasta.
Perintö Pythonissa
Yllä olevassa artikkelissa olemme luoneet kaksi luokkaa, eli henkilö (vanhempi luokka) ja työntekijä (lapsiluokka). Työntekijä-luokka perii Henkilö-luokasta. Voimme käyttää henkilöluokan menetelmiä työntekijäluokan kautta, kuten yllä olevan koodin näyttötoiminnosta näkyy. Lapsiluokka voi myös muokata yläluokan käyttäytymistä Detail()-metodin kautta.
Python 3 # 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()> Lähtö
Rahul 886012 My name is Rahul IdNumber: 886012 Post: Intern>
Huomautus: Lisätietoja saat osoitteestamme Perintö Pythonissa opetusohjelma.
Python-polymorfismi
Olio-ohjelmointi Pythonissa polymorfismi tarkoittaa yksinkertaisesti monia muotoja. Meidän on esimerkiksi määritettävä, lentävätkö tietyt lintulajit vai eivät, polymorfismin avulla voimme tehdä tämän yhdellä funktiolla.
Polymorfismi Pythonissa
Tämä koodi esittelee Python Oops -perinnön käsitteen ja menetelmän ohituksen Python-luokissa. Se osoittaa, kuinka alaluokat voivat ohittaa yläluokissaan määritetyt menetelmät tarjotakseen tietyn toiminnan, mutta silti perivät muut menetelmät yläluokalta.
Python 3 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()> Lähtö
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.>
Huomautus: Lisätietoja saat osoitteestamme Polymorfismi Pythonissa Opastus.
Python-kapselointi
Python-olioohjelmoinnissa kapselointi on yksi olio-ohjelmoinnin (OOP) peruskäsitteistä. Se kuvaa ajatusta tietojen käärimisestä ja menetelmistä, jotka toimivat datalla yhden yksikön sisällä. Tämä rajoittaa muuttujien ja menetelmien suoraa käyttöä ja voi estää tietojen tahattoman muuttamisen. Tahattoman muutoksen estämiseksi objektin muuttujaa voidaan muuttaa vain objektin menetelmällä. Tämäntyyppiset muuttujat tunnetaan yksityisinä muuttujina.
Luokka on esimerkki kapseloinnista, koska se kapseloi kaikki tiedot, jotka ovat jäsenfunktioita, muuttujia jne.

Kapselointi Pythonissa
Yllä olevassa esimerkissä olemme luoneet c-muuttujan yksityiseksi attribuutiksi. Emme voi edes käyttää tätä attribuuttia suoraan emmekä voi edes muuttaa sen arvoa.
Python 3 # 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> Lähtö
techcodeview.com>
Huomautus: lisätietoja saat osoitteestamme Kapselointi Pythonissa Opastus.
Tietojen abstraktio
Se piilottaa käyttäjältä tarpeettomat kooditiedot. Myös silloin, kun emme halua paljastaa arkaluonteisia osia kooditoteutuksestamme ja tästä tuli tiedon abstraktio.
Tietojen abstraktio Pythonissa voidaan saavuttaa luomalla abstrakteja luokkia.
Olio-ohjelmointi Pythonissa | Sarja 2 (tietojen piilottaminen ja objektien tulostus)