Klase i objekti Pythona - objektno orijentirano programiranje



Ovaj blog na temu 'Klasa Python' bavi se osnovama klase, atributa i raznim OOPS konceptima kao što su nasljeđivanje, polimorfizam i enkapsulacija.

Nakon što je Stack Overflow predvidio da će do 2019. Python nadmašiti ostale jezike u smislu aktivnih programera, potražnja za samo raste.Python slijedi objektno orijentiranu paradigmu programiranja. Bavi se deklariranjem klasa python, stvaranjem objekata od njih i interakcijom s korisnicima. U objektno orijentiranom jeziku program je podijeljen na samostalne objekte ili možete reći na nekoliko mini programa. Svaki objekt predstavlja drugačiji dio aplikacije koji može međusobno komunicirati.
U ovom blogu klase python razumjet ćete svaki aspekt klasa i objekata u sljedećem slijedu:

Započnimo.:-)





Što je klasa Python?

Klasa u pythonu je nacrt iz kojeg se stvaraju određeni objekti. Omogućuje vam strukturiranje softvera na određeni način. Evo pitanja kako? Predavanja nam omogućuju logično grupiranje podataka i funkcioniranje na način koji je jednostavan za ponovnu upotrebu i način na koji se može nadograditi ako je potrebno. Razmotrite donju sliku.

ClassesAndObjects - klasa Python - EdurekaNa prvoj slici (A) predstavlja nacrt kuće koji se može smatrati Razred . Istim planom možemo stvoriti nekoliko kuća i to se može smatrati Predmeti . Koristeći klasu, možete dodati dosljednost svojim programima kako bi se mogli koristiti na čišći i učinkovitiji način. Atributi su članovi podataka (varijable klase i varijable instance) i metode kojima se pristupa točkovnim zapisom.



  • Varijabla razreda je varijabla koju dijele svi različiti objekti / instance klase.
  • Varijable instance su varijable koje su jedinstvene za svaku instancu. Definiran je unutar metode i pripada samo trenutnoj instanci klase.
  • Metode nazivaju se i funkcijama koje su definirane u klasi i opisuje ponašanje objekta.

Krenimo sada i vidjet ćemo kako to funkcionira u PyCharmu. Za početak prvo pogledajte sintaksu klase python.

Sintaksa :

kako koristiti trim metodu u javi -
klasa Ime_klase: iskaz-1. . izjava-N

Ovdje je „ razred ' naredba stvara novu definiciju klase. Naziv klase odmah slijedi ključnu riječ „ razred ' u pythonu iza kojeg slijedi dvotačka. Da biste stvorili klasu u pythonu, razmotrite sljedeći primjer:



razred zaposlenika: proslijedite #no atribute i metode emp_1 = zaposlenik () emp_2 = zaposlenik () # varijablu instance može se stvoriti ručno 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)

Izlaz -

aayushi@edureka.co test@company.com

Sad, što ako ne želimo ručno postaviti ove varijable. Vidjet ćete puno koda, a također je sklon pogreškama. Dakle, da bismo to učinili automatskim, možemo koristiti metodu „init“. Za to, shvatimo što su točno metode i atributi u klasi python.

Metode i atributi u klasi Python

Sada je stvaranje klase nepotpuno bez neke funkcionalnosti. Dakle, funkcionalnosti se mogu definirati postavljanjem različitih atributa koji djeluju kao spremnik podataka i funkcija povezanih s tim atributima. Funkcije u pythonu nazivaju se i Metode . Govoreći o u tome metoda , to je posebna funkcija koja se poziva kad god se instancira novi objekt te klase. Možete to smatrati metodom inicijalizacije ili to možete smatrati konstruktorima ako dolazite iz bilo koje druge objektno orijentirane pozadine programiranja, kao što su C ++, Java itd. Kad postavimo metodu unutar klase, oni automatski primaju instancu. Krenimo s razredom python i prihvatimo ime, prezime i plaću pomoću ove metode.

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

Sada smo u okviru naše metode „init“ postavili ove varijable instance (self, first, last, sal). Self je instanca što znači kad god napišemo self.fname = first, isto je što i emp_1.first = 'aayushi'. Tada smo stvorili instance klase zaposlenika gdje možemo proslijediti vrijednosti navedene u init metodi. Ova metoda uzima instance kao argumente. Umjesto da to radite ručno, to će biti učinjeno automatski sada.

Dalje, želimo sposobnost izvođenja neke vrste radnje. Za to ćemo dodati a metoda ovom razredu. Pretpostavimo da želim da funkcionalnost prikazuje puno ime zaposlenika. Pa, primijenimo to praktično.

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

Izlaz-

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

Kao što vidite gore, stvorio sam metodu pod nazivom 'puno ime' unutar klase. Dakle, svaka metoda unutar klase python automatski uzima instancu kao prvi argument. Sad sam u okviru ove metode napisao logiku za ispis punog imena i vraćanje ovog umjesto emp_1 imena i prezimena. Dalje, upotrijebio sam 'self' tako da će raditi sa svim instancama. Stoga da bismo ovo ispisali svaki put, koristimo a metoda .

Krećući se prema Python klasama, postoje varijable koje se dijele među svim instancama klase. Oni se zovu kao varijable razreda . Varijable instance mogu biti jedinstvene za svaku instancu kao što su imena, e-pošta, sal itd. Komplicirano? Shvatimo to na primjeru. Pogledajte donji kod da biste saznali godišnji rast plaće.

zaposlenik u 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 puno ime (samo): povratak '{} {}'. format (self.fname, self.lname) def apply_raise (self): self.sal = int (self.sal * 1.05 ) emp_1 = zaposlenik ('aayushi', 'johari', 350000) emp_2 = zaposlenik ('test', 'test', 100000) print (emp_1.sal) emp_1.apply_raise () print (emp_1.sal)

Izlaz-

350000 367500

Kao što vidite gore, prvo sam tiskao plaću, a zatim primijenio povećanje od 1,5%. Da bismo pristupili ovim varijablama klase, moramo im pristupiti putem klase ili instance klase. Sada, shvatimo razne atribute u klasi python.

Atributi u klasi Python

Atributi u Pythonu definiraju svojstvo objekta, elementa ili datoteke. Postoje dvije vrste atributa:

  • Ugrađeni atributi klase: Unutar Python klasa prisutni su razni ugrađeni atributi. Na primjer _dict_, _doc_, _name _ itd. Dopustite da uzmem isti primjer gdje želim pregledati sve parove ključ / vrijednost zaposlenika1. Za to možete jednostavno napisati donju izjavu koja sadrži prostor imena klase:

    ispis (emp_1 .__ dict__)

    Nakon izvršenja dobit ćete izlaz kao što su: {‘fname’: ‘aayushi’, ‘lname’: ‘johari’, ‘sal’: 350000, ‘email’: ‘aayushi.johari@company.com’}

  • Atributi definirani od strane korisnika : Atributi se kreiraju unutar definicije klase. Možemo dinamički stvarati nove atribute za postojeće instance klase. Atributi se mogu vezati i za nazive klasa.

Dalje, imamo javno, zaštićeno i privatni atributi. Razumijemo ih detaljno:

Imenovanje Tip Značenje
ImeJavnostTi se atributi mogu slobodno koristiti unutar ili izvan definicije klase
_ImeZaštićenZaštićeni atributi ne smiju se koristiti izvan definicije klase, osim unutar definicije potklase
__ImePrivatniOva vrsta atributa je nepristupačna i nevidljiva. Niti je moguće čitati niti pisati te atribute, osim unutar same definicije klase


Dalje, shvatimo najvažniju komponentu u klasi python, tj. Objekte.

java sortiraj arraylist cijelih brojeva

Što su objekti u klasi Python?

Kao što smo gore razgovarali, objekt se može koristiti za pristup različitim atributima. Koristi se za stvaranje instance klase. Instanca je objekt klase stvorene u vrijeme izvođenja.

To pružiti vam brz pregled, objekt je u osnovi sve što vidite oko sebe. Na primjer: Pas je objekt klase životinja, ja sam objekt klase ljudi. Slično tome, u istoj klasi telefona mogu biti različiti objekti.Ovo je prilično slično pozivu funkcije o kojem smo već razgovarali. Shvatimo to na primjeru:

klasa MyClass: def func (self): print ('Hello') # stvori novi MyClass ob = MyClass () ob.func ()

Krećući se prema klasi python, shvatimo različite koncepte OOP-a.

OOPs koncepti

OOP se odnosi na objektno orijentirano programiranje u Pythonu. Pa, Python nije potpuno objektno orijentiran jer sadrži neke proceduralne funkcije. Sad se sigurno pitate koja je razlika između proceduralnog i objektno orijentiranog programiranja. Da razjasnimo vašu sumnju, u proceduralnom programiranju cijeli je kod zapisan u jedan dugački postupak iako može sadržavati funkcije i potprograme. Njime se ne može upravljati jer se i podaci i logika miješaju. Ali kada govorimo o objektno orijentiranom programiranju, program se dijeli na samostalne objekte ili nekoliko mini programa. Svaki objekt predstavlja drugačiji dio aplikacije koji ima svoje podatke i logiku za međusobnu komunikaciju. Na primjer, web stranica ima različite predmete kao što su slike, videozapisi itd.
Objektno orijentirano programiranje uključuje koncept klase Python, objekta, nasljeđivanja, polimorfizma, apstrakcije itd. Razumijemo ove teme detaljno.

Klasa Python: nasljeđivanje

Nasljeđivanje nam omogućuje nasljeđivanje atributa i metoda iz osnovne / nadređene klase. To je korisno jer možemo stvoriti podrazrede i dobiti sve funkcije naše roditeljske klase. Tada možemo prepisati i dodati nove funkcionalnosti bez utjecaja na roditeljsku klasu. Razumijemo na primjeru koncept roditeljskog razreda i dječjeg razreda.

Kao što možemo vidjeti na slici, dijete nasljeđuje svojstva od oca. Slično tome, u pythonu postoje dvije klase:

1. Roditeljska klasa (Super ili Osnovna klasa)

2. Podređeni razred (podrazred ili izvedeni razred)

Klasa koja nasljeđuje svojstva poznata je pod nazivom Dijete Klasa dok je klasa čija su svojstva naslijeđena poznata kao Roditelj razred.

Nasljeđivanje se odnosi na sposobnost stvaranja Podrazredi koji sadrže specijalizacije njihovih roditelja. Dalje se dijeli na četiri vrste, naime jedno, višerazinsko, hijerarhijsko i višestruko nasljeđivanje. Pogledajte donju sliku da biste bolje razumjeli.

Krenimo s razredom python i shvatimo kako je nasljeđivanje korisno.

Recimo, želim stvoriti satove za vrste zaposlenika. Stvorit ću 'programere' i 'menadžere' kao potklase, jer će i programeri i menadžeri imati ime, e-poštu i plaću, a sve će te funkcije biti tu u klasi zaposlenika. Dakle, umjesto kopiranja koda za potklase, možemo jednostavno ponovno koristiti nasljeđivanje od zaposlenika.

zaposlenik u razredu: num_employee = 0 rise_amount = 1,04 def __init __ (self, first, last, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + zadnji + '@ company.com' zaposlenik.broj_employee + = 1 def puno ime (self): povratak '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( self.sal * raise_amount) programer klase (zaposlenik): proći emp_1 = programer ('aayushi', 'johari', 1000000) ispis (emp_1.email)
 Izlaz - aayushi.johari@company.com

Kao što možete vidjeti iz gornjeg rezultata, svi detalji klase zaposlenika dostupni su u klasi programera.Što ako sada želim povećati iznos_viza za programera na 10%? da vidimo kako se to može praktično učiniti.

zaposlenik u razredu: num_employee = 0 rise_amount = 1,04 def __init __ (self, first, last, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + zadnji + '@ company.com' zaposlenik.broj_employee + = 1 def puno ime (self): povratak '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( self.sal * rise_amount) programer klase (zaposlenik): rise_amount = 1,10 emp_1 = developer ('aayushi', 'johari', 1000000) print (emp_1.raise_amount)
 Izlaz - 1.1

Kao što vidite, ažurirao je postotni rast plaće s 4% na 10%.Sada, ako želim dodati još jedan atribut, recimo programski jezik u našoj init metodi, ali on ne postoji u našoj roditeljskoj klasi. Postoji li neko rješenje za to? Da! možemo kopirati cijelu logiku zaposlenika i to učiniti, ali to će opet povećati veličinu koda. Dakle, da bismo to izbjegli, razmotrimo donji kod:

zaposlenik u razredu: num_employee = 0 rise_amount = 1,04 def __init __ (self, first, last, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + zadnji + '@ company.com' zaposlenik.broj_employee + = 1 def puno ime (self): povratak '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( programer klase self.sal * rise_amount) (zaposlenik): rise_amount = 1.10 def __init __ (self, first, last, sal, prog_lang): super () .__ init __ (first, last, sal) self.prog_lang = prog_lang emp_1 = programer ( 'aayushi', 'johari', 1000000, 'python') ispis (emp_1.prog_lang)

Stoga sam samo s malo koda napravio promjene. Koristio sam super .__ init __ (prvi, posljednji, pay) koji nasljeđuje svojstva iz osnovne klase.Da zaključimo, nasljeđivanje se koristi za ponovnu upotrebu koda i smanjenje složenosti programa.

Klasa Pythona: polimorfizam

Polimorfizam u računalnim znanostima sposobnost je predstavljanja istog sučelja za različite temeljne oblike. U praktičnom smislu, polimorfizam znači da ako klasa B nasljeđuje klasu A, ne mora nasljeđivati ​​sve o klasi A, može učiniti neke stvari koje klasa A radi drugačije. Najčešće se koristi tijekom bavljenja nasljedstvom. Python je implicitno polimorfan, ima sposobnost preopterećenja standardnih operatora tako da imaju odgovarajuće ponašanje na temelju svog konteksta.

Razumijemo na primjeru:

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 = Mačka ('maca') c.talk () d = Pas (Životinja) d.talk ()

Izlaz -

Mijau! Vau

Dalje, prijeđimo na drugi objektno orijentirani koncept programiranja, tj. Abstrakcija.

Klasa Pythona: Apstrakcija

Apstrakcija se koristi za pojednostavljivanje složene stvarnosti modeliranjem klasa primjerenih problemu. Ovdje imamo apstraktnu klasu koja se ne može instancirati. To znači da ne možete stvoriti objekte ili instance za ove klase. Može se koristiti samo za nasljeđivanje određenih funkcionalnosti koje nazivate osnovnom klasom. Dakle, možete naslijediti funkcionalnosti, ali istodobno ne možete stvoriti instancu ove određene klase. Razumijemo pojam apstraktne klase s primjerom u nastavku:

koja je ideja najbolja za javu
iz abc uvoza ABC, klasa apstraktne metode Zaposlenik (ABC): @abstractmethod def izračunati_platu (samo, sal): proći klasu Razvojni programer (zaposlenik): def izračunati_platu (samo, sal): finalsalary = sal * 1.10 return finalsalary emp_1 = Razvoj () (emp_1.račun_plata (10000))

Izlaz-

11000,0

Kao što možete vidjeti iz gornjeg rezultata, povećali smo osnovnu plaću na 10%, tj. Plaća je sada 11000. Ako zapravo nastavite i napravite objekt klase 'Zaposlenik', izbacit će vam pogrešku kao što python ne ne omogućuju vam stvaranje objekta apstraktne klase. Ali koristeći nasljeđivanje, zapravo možete naslijediti svojstva i izvršavati odgovarajuće zadatke.

Dakle, dečki, ovdje se sve radilo na satove klasa i objekata ukratko. Obuhvatili smo sve osnove klase Python, objekte i razne objektno orijentirane koncepte u pythonu, tako da sada možete početi vježbati. Nadam se da ste uživali čitajući ovaj blog na 'Python Class' i da ste jasni u vezi sa svim aspektima o kojima sam gore govorio. Nakon klase python, osmislit ću još blogova na Pythonu za scikit learn knjižnicu i polje. Pratite nas!

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare ovog bloga 'Python Class', a mi ćemo vam se javiti u najkraćem mogućem roku.

Da biste stekli detaljno znanje o Pythonu, zajedno s raznim aplikacijama, to možete uz naš internetski trening uživo s podrškom 24/7 i doživotnim pristupom.