Razredi in predmeti Python - objektno usmerjeno programiranje



Ta spletni dnevnik o razredu Python obravnava osnove razreda, atribute in različne koncepte OOPS, kot so dedovanje, polimorfizem in enkapsulacija.

Potem ko je Stack Overflow napovedal, da bo Python do leta 2019 presegel druge jezike v smislu aktivnih razvijalcev, bo povpraševanje po samo raste.Python sledi objektno usmerjeni paradigmi programiranja. Ukvarja se z razglasitvijo razredov python, ustvarjanjem predmetov iz njih in interakcijo z uporabniki. V objektno usmerjenem jeziku je program razdeljen na samostojne predmete ali pa lahko rečete na več mini programov. Vsak predmet predstavlja drugačen del aplikacije, ki lahko komunicira med seboj.
V tem blogu razredov python boste razumeli vsak vidik razredov in predmetov v naslednjem zaporedju:

Začnimo.:-)





Kaj je razred Python?

Razred v pythonu je načrt, iz katerega so ustvarjeni določeni predmeti. Omogoča vam strukturiranje programske opreme na določen način. Tu pride vprašanje, kako? Razredi nam omogočajo logično razvrščanje podatkov in delovanje na način, ki ga je enostavno ponovno uporabiti, in način gradnje, če je treba. Upoštevajte spodnjo sliko.

ClassesAndObjects - razred Python - EdurekaNa prvi sliki (A) predstavlja načrt hiše, ki jo lahko štejemo za Razred . Z istim načrtom lahko ustvarimo več hiš in te lahko štejemo za Predmeti . Z uporabo predavanja lahko svojim programom dodate doslednost, da jih lahko uporabljate na čistejši in učinkovitejši način. Atributi so člani podatkov (spremenljivke razreda in spremenljivke primerka) in metode, do katerih je mogoče dostopati prek pikčastega zapisa.



  • Spremenljivka razreda je spremenljivka, ki jo delijo vsi različni predmeti / primerki razreda.
  • Instance spremenljivke so spremenljivke, ki so unikatne za vsak primerek. Določen je znotraj metode in pripada samo trenutnemu primerku razreda.
  • Metode se imenujejo tudi kot funkcije, ki so definirane v razredu in opisujejo vedenje predmeta.

Zdaj pa pojdimo naprej in poglejmo, kako deluje v PyCharmu. Za začetek si najprej oglejte sintakso razreda python.

Sintaksa :

class Ime_razreda: stavek-1. . izjava-N

Tukaj je razred ' izjava ustvari novo definicijo razreda. Ime predavanja je takoj za ključno besedo » razred ' v pythonu, ki mu sledi dvopičje. Če želite ustvariti razred v pythonu, si oglejte spodnji primer:



razred zaposleni: podajte #no atributov in metod emp_1 = worker () emp_2 = worker () # spremenljivko instance lahko ročno ustvarite emp_1.first = 'aayushi' emp_1.last = 'Johari' emp_1.email='aayushi@edureka.co 'emp_1.pay = 10000 emp_2.first =' test 'emp_2.last =' abc 'emp_2.email='test@company.com' emp_2.pay = 10000 print (emp_1.email) print (emp_2.email)

Izhod -

aayushi@edureka.co test@company.com

Kaj pa, če teh spremenljivk ne želimo ročno nastaviti. Videli boste veliko kode in tudi nagnjena k napakam. Torej, da postane samodejna, lahko uporabimo metodo 'init'. Za to naj razumemo, kaj natančno so metode in atributi v razredu python.

Metode in atributi v razredu Python

Zdaj je ustvarjanje razreda nepopolno brez nekaterih funkcij. Funkcionalnosti je torej mogoče opredeliti z nastavitvijo različnih atributov, ki delujejo kot vsebnik za podatke in funkcije, povezane s temi atributi. Funkcije v pythonu se imenujejo tudi kot Metode . Govorimo o v metoda , je posebna funkcija, ki se pokliče vsakič, ko se ustvari nov objekt tega razreda. Lahko si misliš, da je to metoda inicializacije, lahko pa jo šteješ za konstruktor, če prihajaš iz katerega koli drugega objektno usmerjenega programskega ozadja, kot je C ++, Java itd. Zdaj, ko nastavimo metodo znotraj razreda, prejmejo primerek samodejno. Nadaljujmo z razredom python in s to metodo sprejmimo ime, priimek in plačo.

zaposleni v razredu: def __init __ (self, first, last, sal): self.fname = first self.lname = last self.sal = sal self.email = first + '.' + zadnji + '@ company.com' emp_1 = zaposleni ('aayushi', 'johari', 350000) emp_2 = zaposleni ('test', 'test', 100000) print (emp_1.email) print (emp_2.email)

Zdaj smo znotraj naše metode 'init' nastavili te spremenljivke primerka (self, first, last, sal). Self je primerek, kar pomeni, da kadarkoli pišemo self.fname = first, je enako kot emp_1.first = 'aayushi'. Nato smo ustvarili primerke razreda zaposlenih, kjer lahko posredujemo vrednosti, določene v metodi init. Ta metoda primere vzame kot argumente. Namesto da bi to storili ročno, bo to storjeno samodejno zdaj.

Nato želimo sposobnost izvajanja neke vrste akcije. Za to bomo dodali metoda v ta razred. Recimo, da želim, da funkcija prikazuje polno ime zaposlenega. Torej, uporabimo to praktično.

zaposleni v razredu: def __init __ (self, first, last, sal): self.fname = first self.lname = last self.sal = sal self.email = first + '.' + zadnji + '@ company.com' def polno ime (samo): vrni '{} {}'. format (self.fname, self.lname) emp_1 = zaposleni ('aayushi', 'johari', 350000) emp_2 = zaposleni ('test', 'test', 100000) print (emp_1.email) print (emp_2.email) print (emp_1.fullname ()) print (emp_2.fullname ())

Izhod-

aayushi.johari@company.com test.test@company.com aayushijohari testtest

Kot lahko vidite zgoraj, sem znotraj razreda ustvaril metodo, imenovano »polno ime«. Torej vsaka metoda znotraj razreda python samodejno vzame primerek kot prvi argument. Zdaj v okviru te metode sem napisal logiko, da natisnem polno ime in vrnem to namesto emp_1 imena in priimka. Nato sem uporabil »self«, da bo deloval z vsemi primerki. Zato za vsakokratno tiskanje uporabimo a metoda .

Če nadaljujemo z razredi Python, obstajajo spremenljivke, ki si jih delijo vsi primerki razreda. Ti se imenujejo kot spremenljivke razreda . Spremenljivke primerka so lahko za vsak primerek edinstvene, na primer imena, e-pošta, sal itd. Zapleteno? Razumimo to na primeru. Glejte spodnjo kodo, da ugotovite letni dvig plače.

zaposleni v razredu: perc_raise = 1,05 def __init __ (self, first, last, sal): self.fname = first self.lname = last self.sal = sal self.email = first + '.' + zadnji + '@ company.com' def polno ime (samo): vrni '{} {}'. format (samoime, samo.ime) def apply_raise (samo): samo.sal = int (samo.sal * 1,05 ) emp_1 = zaposleni ('aayushi', 'johari', 350000) emp_2 = zaposleni ('test', 'test', 100000) print (emp_1.sal) emp_1.apply_raise () print (emp_1.sal)

Izhod-

350000 367500

Kot lahko vidite zgoraj, sem najprej natisnil plačo in nato uporabil 1,5-odstotno povečanje. Če želimo dostopati do teh spremenljivk razreda, moramo do njih dostopati prek razreda ali primerka razreda. Zdaj pa razumimo različne atribute v razredu python.

kako ustvariti paket

Atributi v razredu Python

Atributi v Pythonu definirajo lastnost predmeta, elementa ali datoteke. Atributa sta dve:

  • Vgrajeni atributi razreda: V razredih Python so prisotni različni vgrajeni atributi. Na primer _dict_, _doc_, _name _ itd. Naj vzamem isti primer, kjer si želim ogledati vse pare ključ-vrednost worker1. Za to lahko preprosto napišete spodnjo izjavo, ki vsebuje imenski prostor razreda:

    pretvorba binarnega v decimalno v javi
    natisni (emp_1 .__ dict__)

    Po njegovem izvajanju boste dobili rezultate, kot so: {‘fname’: ‘aayushi’, ‘lname’: ‘johari’, ‘sal’: 350000, ‘email’: ‘aayushi.johari@company.com’}

  • Atributi, ki jih definirajo uporabniki : Atributi so ustvarjeni znotraj definicije razreda. Dinamično lahko ustvarimo nove atribute za obstoječe primerke razreda. Atribute lahko vežete tudi na imena razredov.

Nato imamo javno, zaščiteno in zasebno lastnosti. Razumejmo jih podrobno:

Poimenovanje Tip Pomen
ImeJavnoTe atribute lahko prosto uporabljate znotraj ali zunaj definicije razreda
_imeZaščitenoZaščitenih atributov ne smete uporabljati zunaj definicije razreda, razen znotraj definicije podrazreda
__imeZasebnoTa vrsta atributov je nedostopna in nevidna. Teh atributov ni mogoče niti brati niti pisati, razen znotraj same definicije razreda


Nato razumemo najpomembnejšo komponento v razredu python, tj. Objects.

Kaj so predmeti v razredu Python?

Kot smo že omenili, lahko z objektom dostopate do različnih atributov. Uporablja se za ustvarjanje primerka razreda. Primerek je predmet razreda, ustvarjenega med izvajanjem.

To hiter pregled, predmet je v bistvu vse, kar vidite naokoli. Na primer: Pes je predmet živalskega razreda, jaz sem predmet človeškega razreda. Podobno lahko obstajajo različni predmeti istega razreda telefona.To je precej podobno klicu funkcije, o katerem smo že govorili. Razumimo to na primeru:

class MyClass: def func (self): print ('Hello') # ustvari nov MyClass ob = MyClass () ob.func ()

Če nadaljujemo z razredom python, bomo razumeli različne koncepte OOP.

Koncepti OOP

OOP se nanaša na objektno usmerjeno programiranje v Pythonu. No, Python ni popolnoma objektno usmerjen, saj vsebuje nekatere proceduralne funkcije. Zdaj se gotovo sprašujete, kakšna je razlika med proceduralnim in objektno usmerjenim programiranjem. Da bi odpravili vaš dvom, je v postopkovnem programiranju celotna koda zapisana v en dolg postopek, čeprav lahko vsebuje funkcije in podprograme. Z njim ni mogoče upravljati, saj se tako podatki kot logika mešata. Ko pa govorimo o objektno usmerjenem programiranju, je program razdeljen na samostojne predmete ali več mini programov. Vsak objekt predstavlja drugačen del aplikacije, ki ima svoje podatke in logiko za medsebojno komunikacijo. Na spletnem mestu so na primer različni predmeti, kot so slike, video posnetki itd.
Objektno usmerjeno programiranje vključuje koncept razreda Python, objekta, dedovanja, polimorfizma, abstrakcije itd. Podrobneje razumemo te teme.

Razred Python: Dedovanje

Dedovanje nam omogoča podedovanje atributov in metod iz osnovnega / nadrejenega razreda. To je koristno, saj lahko ustvarimo podrazrede in vse funkcije dobimo iz nadrejenega razreda. Nato lahko prepišemo in dodamo nove funkcije, ne da bi to vplivalo na nadrejeni razred. Pojmo koncept roditeljskega razreda in otroškega razreda s primerom.

Kot lahko vidimo na sliki, otrok lastnosti podeduje po očetu. Podobno imamo v pythonu dva razreda:

1. Razred staršev (razred Super ali osnovni)

2. Otroški razred (podrazred ali izpeljani razred)

Razred, ki podeduje lastnosti, je znan kot Otrok Razred, medtem ko je razred, katerega lastnosti so podedovane, znan kot Starš razred.

Dedovanje se nanaša na sposobnost ustvarjanja Podrazredi ki vsebujejo specializacije njihovih staršev. Nadalje je razdeljen na štiri tipe, in sicer enojne, večnivojske, hierarhične in večkratne dediščine. Za boljše razumevanje si oglejte spodnjo sliko.

Nadaljujmo z razredom python in razumemo, kako koristno je dedovanje.

Recimo, želim ustvariti razrede za vrste zaposlenih. Kot razrede bom ustvaril 'razvijalce' in 'upravitelje', saj bodo imeli razvijalci in upravitelji ime, e-pošto in plačo, vse te funkcije pa bodo v razredu zaposlenih. Namesto da bi kopirali kodo za podrazrede, jo lahko preprosto ponovno uporabimo z dedovanjem od zaposlenega.

kako uporabljati brskalnik
zaposleni v razredu: num_employee = 0 zvišanje_številke = 1,04 def __init __ (self, first, last, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + zadnji + '@ company.com' worker.num_employee + = 1 def polno ime (self): vrni '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( self.sal * raise_amount) razvijalec razreda (zaposleni): poda emp_1 = razvijalec ('aayushi', 'johari', 1000000) print (emp_1.email)
 Izhod - aayushi.johari@company.com

Kot lahko vidite v zgornjem izhodu, so vse podrobnosti o razredu zaposlenih na voljo v razredu za razvijalce.Kaj pa, če želim spremeniti zvišanje zneska za razvijalca na 10%? poglejmo, kako je to mogoče praktično narediti.

zaposleni v razredu: num_employee = 0 zvišanje_številke = 1,04 def __init __ (self, first, last, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + zadnji + '@ company.com' worker.num_employee + = 1 def polno ime (self): vrni '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( razvijalec razreda self.sal * rise_amount) (zaposleni): rise_amount = 1.10 emp_1 = razvijalec ('aayushi', 'johari', 1000000) print (emp_1.raise_amount)
 Izhod - 1.1

Kot lahko vidite, je posodobil odstotni dvig plač s 4% na 10%.Zdaj, če želim dodati še en atribut, recimo programski jezik v naši metodi init, vendar v našem nadrejenem razredu ne obstaja. Ali obstaja kakšna rešitev za to? Ja! lahko kopiramo celotno logiko zaposlenih in to storimo, vendar bo spet povečala velikost kode. Da se temu izognemo, upoštevajmo spodnjo kodo:

zaposleni v razredu: num_employee = 0 zvišanje_številke = 1,04 def __init __ (self, first, last, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + zadnji + '@ company.com' worker.num_employee + = 1 def polno ime (self): vrni '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( razvijalec razreda self.sal * rise_amount) (zaposleni): rise_amount = 1.10 def __init __ (self, first, last, sal, prog_lang): super () .__ init __ (first, last, sal) self.prog_lang = prog_lang emp_1 = razvijalec ( 'aayushi', 'johari', 1000000, 'python') print (emp_1.prog_lang)

Zato sem z malo kode naredil spremembe. Uporabil sem super .__ init __ (first, last, pay), ki podeduje lastnosti iz osnovnega razreda.Za zaključek se dedovanje uporablja za ponovno uporabo kode in zmanjšanje zapletenosti programa.

Razred Python: polimorfizem

Polimorfizem v računalništvu je sposobnost predstavitve istega vmesnika za različne osnovne oblike. V praktičnem smislu polimorfizem pomeni, da če razred B podeduje razred A, mu ni treba podedovati vsega glede razreda A, lahko nekatere stvari, ki jih razred A počne, počne drugače. Najpogosteje se uporablja pri obravnavi dediščine. Python je implicitno polimorfen in ima zmožnost preobremeniti standardne operaterje, tako da imajo primerno vedenje glede na njihov kontekst.

Razumimo s primerom:

class Animal: def __init __ (self, name): self.name = name def talk (self): pass class Dog (Animal): def talk (self): print ('Woof') class Cat (Animal): def talk ( self): print ('MEOW!') c = Cat ('kitty') c.talk () d = Dog (Animal) d.talk ()

Izhod -

Mijav! Opa

Nato preidimo na drug objektno usmerjen koncept programiranja, tj. Abstrakcija.

Razred Python: Abstrakcija

Abstrakcija se uporablja za poenostavitev kompleksne resničnosti z modeliranjem razredov, ki ustrezajo problemu. Tu imamo abstraktni razred, ki ga ni mogoče ustvariti. To pomeni, da za te razrede ne morete ustvarjati predmetov ali primerkov. Uporablja se lahko le za dedovanje nekaterih funkcij, ki jih imenujete kot osnovni razred. Torej lahko podedujete funkcionalnosti, hkrati pa ne morete ustvariti primerka tega razreda. Razumejmo koncept abstraktnega razreda s spodnjim primerom:

iz abc import ABC, razred abstraktne metode Zaposleni (ABC): @abstractmethod def izračunati_plačo (samo, sal): predati razred Razvijalec (zaposleni): def izračunati_plačo (samo, sal): finalsalary = sal * 1.10 return finalsalary emp_1 = Razvijalec () (emp_1.računaj_plačo (10000))

Izhod-

11000,0

Kot lahko vidite v zgornjem rezultatu, smo osnovno plačo povečali na 10%, tj. Plača je zdaj 11000. Če dejansko nadaljujete in naredite predmet razreda 'Zaposleni', se vam vrne napaka, saj python ne ne omogoča ustvarjanja predmeta abstraktnega razreda. Toda z dedovanjem lahko dejansko podedujete lastnosti in izvedete ustrezne naloge.

Fantje, tukaj je šlo le za razrede in predmete python na kratko. Zajeli smo vse osnove razreda Python, predmete in različne objektno usmerjene koncepte v pythonu, tako da lahko začnete vaditi zdaj. Upam, da ste uživali v branju tega spletnega dnevnika o “Python Class” in ste jasni glede vseh vidikov, o katerih sem že govoril. Po tečaju pythona bom pripravil več spletnih dnevnikov na Pythonu za scikit learn knjižnico in matriko. Ostani na vezi!

Imate vprašanje za nas? Prosimo, omenite ga v oddelku za komentarje tega spletnega dnevnika »Razred Python« in v najkrajšem možnem času se vam bomo oglasili.

Če želite poglobljeno znanje Pythona in njegovih različnih aplikacij, lahko z našim spletnim treningom v živo s podporo 24 ur na dan in 7 dni v tednu.