python oops concepts python classes
OOP koncepti v Pythonu: razredi in predmeti Python, dedovanje, preobremenitev, razveljavitev in skrivanje podatkov
V prejšnji vadnici smo našli nekaj Vhodno / izhodne operacije ki jih ponuja Python.
Spoznali smo, kako uporabiti te funkcije za branje podatkov od uporabnika ali zunanjih virov in tudi zapisovanje teh podatkov v zunanje vire. Naučili smo se tudi, kako z uporabo funkcij razdeliti ogromno kodo na manjše metode in kako jih poklicati ali dostopati do njih.
Nadaljnje branje => Izrecna paleta brezplačnih vadnic za vadbo Pythona
V tej vadnici bomo razpravljali o naprednem konceptu Python, imenovanem OOP, in o različnih vrstah konceptov oops, ki so na voljo v Pythonu, ter kako in kje jih uporabiti.
Kaj se boste naučili:
- Oglejte si VIDEO Vadnice
- Razredi in predmeti
- Konstruktor v Pythonu
- Dedovanje
- Preobremenitev metode v Pythonu
- Preglasitev metode v Pythonu
- Skrivanje podatkov v Pythonu
- Zaključek
- Priporočeno branje
Oglejte si VIDEO Vadnice
Video št. 1: Razred, predmeti in konstruktor v Pythonu
Video št. 2: Koncept dedovanja v Pythonu
Video št. 3: Preobremenitev, razveljavitev in skrivanje podatkov v Pythonu
Razredi in predmeti
- Python je objektno usmerjen programski jezik, kjer programiranje bolj poudarja predmete.
- Skoraj vse v Pythonu so predmeti.
Predavanja
Razred v Pythonu je zbirka predmetov, za razred si lahko predstavljamo načrt ali skico ali prototip. Vsebuje vse podrobnosti predmeta.
V resničnem primeru je Animal razred, ker imamo na svetu različne vrste živali in vse te spadajo v razred Animal.
Opredelitev razreda
V Pythonu bi morali razred definirati s ključno besedo ‘class’.
Sintaksa:
class classname: #Collection of statements or functions or classes
Primer:
class MyClass: a = 10 b = 20 def add(): sum = a+b print(sum)
V zgornjem primeru smo razglasili razred, imenovan 'Myclass', ter določili in definirali nekatere spremenljivke oziroma funkcije.
Za dostop do funkcij ali spremenljivk, ki so prisotne v razredu, lahko uporabimo ime razreda tako, da ustvarimo njegov predmet.
Najprej poglejmo, kako dostopati do tistih, ki uporabljajo ime predavanja.
Primer:
class MyClass: a = 10 b = 20 #Accessing variable present inside MyClass print(MyClass.a)
Izhod
10.
Izhod:
Predmeti
Predmet je običajno primerek razreda. Uporablja se za dostop do vsega, kar je znotraj predavanja.
Ustvarjanje predmeta
Sintaksa:
variablename = classname
Primer:
ob = MyClass()
To bo ustvarilo nov objekt primerka z imenom 'ob'. S tem imenom objekta lahko dostopamo do vseh atributov, ki so prisotni v razredu MyClass.
Primer:
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()
Izhod:
10.
dvajset
30.
Izhod:
katere so komponente platforme java?
Konstruktor v Pythonu
Konstruktor v Pythonu je posebna metoda, ki se uporablja za inicializacijo članov razreda med izvajanjem, ko se ustvari objekt.
V Pythonu imamo nekaj vgrajenih metod razredov, ki se začnejo z dvojnim podčrtajem (__) in imajo v Pythonu poseben pomen.
Ime konstruktorja bo vedno __init __ ().
Vsak razred mora imeti konstruktor, tudi če konstruktorja ne ustvarite izrecno, bo sam ustvaril privzeti konstruktor.
Primer:
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()
Izhod:
Vsota a in b je: 27
Izhod:
Če opazimo v zgornjem primeru, ne bomo poklicali metode __init __ (), ker bo samodejno poklicana, ko bomo ustvarili objekt za ta razred in inicializirali člane podatkov, če obstajajo.
Vedno si zapomnite, da konstruktor ne bo nikoli vrnil nobenih vrednosti, zato ne vsebuje nobenih stavkov return.
Dedovanje
Dedovanje je eden najmočnejših konceptov OOP.
Razred, ki podeduje lastnosti drugega razreda, se imenuje Dedovanje.
Razred, ki podeduje lastnosti, se imenuje podrejeni razred / podrazred, razred, iz katerega so lastnosti podedovane, pa nadrejeni razred / osnovni razred.
Python ponuja tri vrste dedovanja:
- Enkratno dedovanje
- Dedovanje na več ravneh
- Večkratno dedovanje
Priporočeno branje = >> Dedovanje v Javi
# 1) Posamezno dedovanje
V dedovanju posameznika bo en razred podedoval lastnosti samo enega razreda.
Primer:
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()
Izhod:
Vsota a in b je: 30
Odštevanje c in d je: 40
Izhod:
V zgornjem primeru podedujemo lastnosti razreda ‘Operations’ v razred ‘MyClass’.
Tako lahko z uporabo objektov MyClass dostopamo do vseh metod ali stavkov, ki so prisotni v razredu ‘Operacije’.
# 2) Večstopenjsko dedovanje
Pri večstopenjskem dedovanju en ali več razred deluje kot osnovni razred.
Kar pomeni, da bo drugi razred podedoval lastnosti prvega razreda, tretji razred pa lastnosti drugega razreda. Torej bo drugi razred deloval tako kot razred staršev kot otrok.
Primer:
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()
Izhod:
Vsota a in b je: 30
Odštevanje a in b je: 10
Množenje a in b je: 200
Izhod:
V zgornjem primeru razred 'Subtraction' podeduje lastnosti razreda 'Addition', razred 'Multiplication' pa lastnosti razreda 'Subtraction'. Torej bo razred 'Odštevanje' deloval tako kot osnovni razred kot izpeljani razred.
# 3) Večkratno dedovanje
Razred, ki podeduje lastnosti več razredov, se imenuje Multiple Inheritance.
Nadaljnje branje = >> Ali Java podpira večkratno dedovanje?
Primer:
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()
Izhod:
Vsota a in b je: 30
Odštevanje c in d je: 10
Množenje a in c je: 500
Izhod:
Preobremenitev metode v Pythonu
Več metod z istim imenom, vendar z drugačno vrsto parametra ali različnim številom parametrov, se imenuje preobremenitev metode
Primer:
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)
Izhod:
30.
Izhod:
Izhod:
Preobremenitev metode v Pythonu ni podprta, ker, če vidimo v zgornjem primeru, smo definirali dve funkciji z istim imenom 'izdelek', vendar z različnim številom parametrov.
Toda v Pythonu se bo posodobil zadnji definiran, zato bo funkcijski izdelek (a, b) neuporaben.
Preglasitev metode v Pythonu
Če ima metoda podrazreda isto ime, ki je deklarirano v metodi superrazreda, se imenuje Method overriding
Da bi dosegli preglasitev metode, moramo uporabiti dedovanje.
Primer:
class A: def sayHi(): print(“I am in A”) class B(A): def sayHi(): print(“I am in B”) ob = B() ob.sayHi()
Izhod:
Jaz sem v B
Izhod:
Skrivanje podatkov v Pythonu
Skrivanje podatkov pomeni, da podatke naredimo zasebne, tako da ne bodo dostopni ostalim članom razreda. Do njega je mogoče dostopati samo v razredu, kjer je prijavljen.
Če želimo v spremenljivki python skriti spremenljivko, moramo pred imenom spremenljivke napisati dvojno podčrtaj (__).
Primer:
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
Izhod:
30.
Sledenje (zadnji zadnji klic):
Datoteka 'DataHiding.py', vrstica 10, v
natisni (zapadlo .__)
AttributeError: primerek MyClass ima
brez atributa __num
Izhod:
Zaključek
Razred je načrt ali predloga, ki vsebuje vse podrobnosti predmeta, kjer je objekt primerek razreda.
- Če želimo v razred dobiti lastnosti drugega razreda, je to mogoče doseči z dedovanjem.
- Dedovanje je treh vrst - enojno dedovanje, večstopenjsko dedovanje in več dedovanje.
- Preobremenitev metode v Pythonu ni podprta.
- Preglasitev metode se uporablja za razveljavitev izvajanja iste funkcije, ki je definirana v drugem razredu.
- Atribute podatkov lahko naredimo kot zasebne ali jih skrijemo, tako da ne bodo dostopni zunaj razreda, kjer so definirani.
Naša prihajajoča vadnica vam bo podrobno razložila več o dodatnih konceptih Pythona !!
PREV Vadnica | NASLEDNJA Vadnica
Priporočeno branje
- Python spremenljivke
- Vadnica Python DateTime s primeri
- Funkcije niza Python
- Vadnica za Python za začetnike (praktično BREZPLAČNO usposabljanje za Python)
- Izjave o nadzoru Pythona (Python Continue, Break and Pass)
- Python operaterji
- Python funkcije
- Uvod in postopek namestitve Pythona