python oops concepts python classes
OOP koncepti u Pythonu: Klase i objekti Pythona, nasljeđivanje, preopterećenje, poništavanje i skrivanje podataka
U prethodnom smo tutorialu objavili neke od Ulazno / izlazne operacije koje Python pruža.
Saznali smo kako koristiti ove funkcije za čitanje podataka od korisnika ili iz vanjskih izvora, kao i kako te podatke zapisati u vanjske izvore. Također, naučili smo kako podijeliti ogroman kôd na manje metode pomoću funkcija i kako ih pozvati ili im pristupiti.
kako otvoriti .torrent datoteku
Daljnje čitanje => Eksplicitni raspon besplatnih vodiča za obuku Pythona
U ovom uputstvu razgovarat ćemo o naprednom konceptu Python nazvanom OOP i različitim vrstama koncepata oops koji su dostupni u Pythonu te kako i gdje ih koristiti.
Što ćete naučiti:
- Pogledajte VIDEO vodiče
- Razredi i predmeti
- Konstruktor u Pythonu
- Nasljeđivanje
- Preopterećenje metode u Pythonu
- Nadjačavanje metode u Pythonu
- Sakrivanje podataka u Pythonu
- Zaključak
- Preporučena literatura
Pogledajte VIDEO vodiče
Video # 1: Razred, objekti i konstruktori u Pythonu
Video # 2: Koncept nasljeđivanja u Pythonu
Video # 3: Preopterećenje, poništavanje i skrivanje podataka u Pythonu
Razredi i predmeti
- Python je objektno orijentirani programski jezik u kojem programiranje više naglašava objekte.
- Gotovo sve u Pythonu su objekti.
Nastava
Predavanje u Pythonu je zbirka predmeta, o klasi možemo razmišljati kao o nacrtu ili skici ili prototipu. Sadrži sve detalje predmeta.
U primjeru iz stvarnog svijeta, Životinja je klasa, jer na svijetu imamo različite vrste Životinja i sve one pripadaju klasi koja se zove Životinje.
Definiranje klase
U Pythonu bismo klasu trebali definirati pomoću ključne riječi ‘class’.
Sintaksa:
class classname: #Collection of statements or functions or classes
Primjer:
class MyClass: a = 10 b = 20 def add(): sum = a+b print(sum)
U gornjem primjeru deklarirali smo klasu nazvanu 'Myclass' te smo proglasili i definirali neke varijable odnosno funkcije.
Da bismo pristupili onim funkcijama ili varijablama koje se nalaze unutar klase, možemo koristiti ime klase stvarajući njen objekt.
Prvo, pogledajmo kako pristupiti onima koji koriste naziv klase.
Primjer:
class MyClass: a = 10 b = 20 #Accessing variable present inside MyClass print(MyClass.a)
Izlaz
10
Izlaz:
Predmeti
Objekt je obično instanca klase. Koristi se za pristup svemu prisutnom unutar predavanja.
Stvaranje objekta
Sintaksa:
variablename = classname
Primjer:
ob = MyClass()
To će stvoriti novi objekt instance pod nazivom 'ob'. Korištenjem ovog naziva objekta možemo pristupiti svim atributima prisutnim unutar klase MyClass.
Primjer:
class MyClass: a = 10 b = 20 def add(self): sum = self.a + self.b print(sum) #Creating an object of class MyClass ob = MyClass() #Accessing function and variables present inside MyClass using the object print(ob.a) print(ob.b) ob.add()
Izlaz:
10
dvadeset
30
Izlaz:
Konstruktor u Pythonu
Konstruktor u Pythonu posebna je metoda koja se koristi za inicijalizaciju članova klase tijekom vremena izvođenja kada se kreira objekt.
U Pythonu imamo neke posebne ugrađene metode klase koje započinju dvostrukim podvlakom (__) i imaju posebno značenje u Pythonu.
Ime konstruktora uvijek će biti __init __ ().
Svaka klasa mora imati konstruktor, čak i ako konstruktor ne stvorite eksplicitno, on će sam stvoriti zadani konstruktor.
Primjer:
class MyClass: sum = 0 def __init__ (self, a, b): self.sum = a+b def printSum(self): print(“Sum of a and b is: ”, self.sum) #Creating an object of class MyClass ob = MyClass(12, 15) ob.printSum()
Izlaz:
Zbroj a i b je: 27
Izlaz:
Ako primijetimo u gornjem primjeru, ne pozivamo metodu __init __ (), jer će se automatski pozvati kada kreiramo objekt te klase i inicijaliziramo članove podataka ako postoje.
Uvijek imajte na umu da konstruktor nikada neće vratiti nikakve vrijednosti, stoga ne sadrži izjave za povratak.
Nasljeđivanje
Nasljeđivanje je jedan od najmoćnijih koncepata OOP-a.
Klasa koja nasljeđuje svojstva druge klase naziva se nasljeđivanje.
Klasa koja nasljeđuje svojstva naziva se podređena klasa / podklasa, a klasa iz koje se svojstva nasljeđuju roditeljska klasa / osnovna klasa.
Python pruža tri vrste nasljeđivanja:
- Nasljeđivanje pojedinačno
- Nasljeđivanje na više razina
- Višestruko nasljeđivanje
Preporučena literatura = >> Nasljeđivanje u Javi
# 1) Jedno nasljeđivanje
U pojedinačnom nasljeđivanju, jedna klasa će naslijediti svojstva samo jedne klase.
Primjer:
class Operations: a = 10 b = 20 def add(self): sum = self.a + self.b print(“Sum of a and b is: “, sum) class MyClass(Operations): c = 50 d = 10 def sub(self): sub = self.c – self.d print(“Subtraction of c and d is: ”, sub) ob = MyClass() ob.add() ob.sub()
Izlaz:
Zbroj a i b je: 30
Oduzimanje c i d je: 40
Izlaz:
U gornjem primjeru nasljeđujemo svojstva klase ‘Operacije’ u klasu ‘MyClass’.
Stoga možemo pristupiti svim metodama ili izrazima koji su prisutni u klasi 'Operacije' pomoću objekata MyClass.
# 2) Višerazinsko nasljeđivanje
U višerazinskom nasljeđivanju jedna ili više klasa djeluju kao osnovna klasa.
Što znači da će druga klasa naslijediti svojstva prve klase, a treća klasa svojstva druge klase. Tako će drugi razred djelovati i kao razred roditelja i kao dijete.
Primjer:
class Addition: a = 10 b = 20 def add(self): sum = self.a + self.b print(“Sum of a and b is: ”, sum) class Subtraction(Addition): def sub(self): sub = self.b-self.a print(“Subtraction of a and b is: ”, sub) class Multiplication(Subtraction): def mul(self): multi = self.a * self.b print(“Multiplication of a and b is: ”, multi) ob = Multiplication () ob.add() ob.sub() ob.mul()
Izlaz:
Zbroj a i b je: 30
Oduzimanje a i b je: 10
Množenje a i b iznosi: 200
Izlaz:
U gornjem primjeru, klasa 'Oduzimanje' nasljeđuje svojstva klase 'Zbrajanje', a klasa 'Množenje' naslijedit će svojstva klase 'Oduzimanje'. Tako će klasa 'Oduzimanje' djelovati i kao osnovna klasa i kao izvedena klasa.
# 3) Višestruko nasljeđivanje
Klasa koja nasljeđuje svojstva više klasa naziva se višestruko nasljeđivanje.
Daljnje čitanje = >> Podržava li Java višestruko nasljeđivanje?
Primjer:
class Addition: a = 10 b = 20 def add(self): sum = self. a+ self.b print(“Sum of a and b is: “, sum) class Subtraction(): c = 50 d = 10 def sub(self): sub = self.c-self.d print(“Subtraction of c and d is: ”, sub) class Multiplication(Addition,Subtraction): def mul(self): multi = self.a * self.c print(“Multiplication of a and c is: ”, multi) ob = Multiplication () ob.add() ob.sub() ob.mul()
Izlaz:
Zbroj a i b je: 30
Oduzimanje c i d je: 10
Množenje a i c iznosi: 500
Izlaz:
Preopterećenje metode u Pythonu
Više metoda s istim nazivom, ali s drugačijom vrstom parametra ili različitim brojem parametara naziva se preopterećenje metoda
Primjer:
def product(a, b): p = a*b print(p) def product(a, b, c): p = a*b*c print(p) #Gives you an error saying one more argument is missing as it updated to the second function #product(2, 3) product(2, 3, 5)
Izlaz:
30
Izlaz:
Izlaz:
Preopterećenje metoda nije podržano u Pythonu, jer ako vidimo u gornjem primjeru, definirali smo dvije funkcije s istim nazivom ‘proizvod’, ali s različitim brojem parametara.
Ali u Pythonu će se ažurirati najnoviji definirani, stoga će proizvod proizvoda (a, b) postati beskoristan.
Nadjačavanje metode u Pythonu
Ako metoda podrazreda ima isto ime koje je deklarirano u metodi superrazreda, tada se naziva Method overriding
Da bismo postigli nadjačavanje metode, moramo koristiti nasljeđivanje.
Primjer:
class A: def sayHi(): print(“I am in A”) class B(A): def sayHi(): print(“I am in B”) ob = B() ob.sayHi()
Izlaz:
Ja sam u B
Izlaz:
Sakrivanje podataka u Pythonu
Sakrivanje podataka znači učiniti podatke privatnima, tako da neće biti dostupni ostalim članovima razreda. Može mu se pristupiti samo u klasi u kojoj je deklariran.
U pythonu, ako želimo sakriti varijablu, moramo napisati dvostruko podvlačenje (__) prije imena varijable.
Primjer:
Class MyClass: __num = 10 def add(self, a): sum = self.__num + a print(sum) ob = MyClass() ob.add(20) print(ob.__num) #The above statement gives an error because we are trying to access private variable outside the class
Izlaz:
30
Traceback (najnoviji zadnji poziv):
Datoteka 'DataHiding.py', redak 10, u
ispis (dospijeće .__)
AttributeError: instanca MyClass ima
nema atribut ‘__num
Izlaz:
Zaključak
Klasa je nacrt ili predložak koji sadrži sve detalje objekta, gdje je objekt primjer klase.
- Ako u klasu želimo dobiti svojstva druge klase, to se može postići nasljeđivanjem.
- Nasljeđivanje je 3 vrste - jedno nasljeđivanje, višerazinsko nasljeđivanje i više nasljeđivanja.
- Preopterećenje metoda nije podržano u Pythonu.
- Nadjačavanje metode koristi se za poništavanje provedbe iste funkcije koja je definirana u drugoj klasi.
- Atribute podataka možemo učiniti privatnima ili ih sakriti kako im neće biti dostupan izvan klase u kojoj je definiran.
Naš predstojeći vodič detaljno će objasniti više o dodatnim konceptima Pythona !!
Preporučena literatura
- Python varijable
- Python DateTime Vodič s primjerima
- Python string funkcije
- Vodič za Python za početnike (Praktični BESPLATNI trening za Python)
- Izjave o kontroli Pythona (Python Continue, Break and Pass)
- Python operateri
- Python funkcije
- Postupak uvođenja i instalacije Pythona