python oops concepts python classes
OOP-koncepter i Python: Python-klasser og objekter, arv, overbelastning, tilsidesættelse og dataskydning
I den foregående vejledning har vi nogle af de Input / output-operationer som Python giver.
Vi lærte at bruge disse funktioner til at læse data fra brugeren eller fra de eksterne kilder, og også hvordan man skriver disse data i eksterne kilder. Vi lærte også, hvordan man opdeler en enorm kode i mindre metoder ved hjælp af funktioner, og hvordan man ringer eller får adgang til dem.
Yderligere læsning => Eksplicit række gratis Python-træningsvejledninger
I denne vejledning vil vi diskutere det avancerede Python-koncept kaldet OOP'er og forskellige typer oops-koncepter, der er tilgængelige i Python, og hvordan og hvor de skal bruges.
Hvad du vil lære:
- Se VIDEO-vejledningerne
- Klasser og objekter
- Konstruktør i Python
- Arv
- Metodeoverbelastning i Python
- Metodeoverstyring i Python
- Data gemmer sig i Python
- Konklusion
- Anbefalet læsning
Se VIDEO-vejledningerne
Video nr. 1: klasse, objekter og konstruktør i Python
Video nr. 2: Begrebet arv i Python
Video nr. 3: Overbelastning, tilsidesættelse og dataskydning i Python
Klasser og objekter
- Python er et objektorienteret programmeringssprog, hvor programmering lægger mere vægt på objekter.
- Næsten alt i Python er genstande.
Klasser
Klasse i Python er en samling objekter, vi kan tænke på en klasse som en tegning eller skitse eller prototype. Den indeholder alle detaljerne i et objekt.
I det virkelige verdenseksempel er dyr en klasse, fordi vi har forskellige slags dyr i verden, og alle disse tilhører en klasse kaldet dyr.
Definere en klasse
I Python skal vi definere en klasse ved hjælp af nøgleordet 'klasse'.
Syntaks:
class classname: #Collection of statements or functions or classes
Eksempel:
class MyClass: a = 10 b = 20 def add(): sum = a+b print(sum)
I ovenstående eksempel har vi erklæret klassen kaldet 'Myclass', og vi har deklareret og defineret henholdsvis nogle variabler og funktioner.
For at få adgang til de funktioner eller variabler, der findes i klassen, kan vi bruge klassens navn ved at oprette et objekt af det.
Lad os først se, hvordan du får adgang til dem, der bruger klassenavn.
Eksempel:
class MyClass: a = 10 b = 20 #Accessing variable present inside MyClass print(MyClass.a)
Produktion
10
Produktion:
Objekter
Et objekt er normalt en forekomst af en klasse. Det bruges til at få adgang til alt der findes i klassen.
Oprettelse af et objekt
Syntaks:
variablename = classname
Eksempel:
ob = MyClass()
Dette opretter et nyt instansobjekt med navnet 'ob'. Ved hjælp af dette objektnavn kan vi få adgang til alle de attributter, der findes i klassen MyClass.
Eksempel:
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()
Produktion:
10
tyve
30
Produktion:
bedste systemværktøjer til Windows 10
Konstruktør i Python
Constructor i Python er en speciel metode, der bruges til at initialisere medlemmerne af en klasse under løbetiden, når et objekt oprettes.
I Python har vi nogle specielle indbyggede klassemetoder, der starter med en dobbelt understregning (__), og de har en særlig betydning i Python.
Navnet på konstruktøren vil altid være __init __ ().
Hver klasse skal have en konstruktør, selvom du ikke opretter en konstruktør eksplicit, opretter den en standardkonstruktør i sig selv.
Eksempel:
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()
Produktion:
Summen af a og b er: 27
Produktion:
Hvis vi observerer i ovenstående eksempel, kalder vi ikke metoden __init __ (), fordi den kaldes automatisk, når vi opretter et objekt til denne klasse og initialiserer dataelementerne, hvis der er nogen.
Husk altid, at en konstruktør aldrig returnerer nogen værdier, derfor indeholder den ikke nogen returneringserklæringer.
Arv
Arv er et af de mest kraftfulde begreber i OOP'er.
En klasse, der arver egenskaberne for en anden klasse, kaldes Arv.
Klassen, der arver egenskaberne, kaldes underklasse / underklasse, og den klasse, hvorfra egenskaber arves, kaldes overordnet klasse / baseklasse.
Python leverer tre typer arv:
- Enkelt arv
- Multilevel arv
- Flere arv
Anbefalet læsning = >> Arv i Java
# 1) Enkelt arv
I enkelt arv arver en klasse kun egenskaberne for en klasse.
Eksempel:
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()
Produktion:
Summen af a og b er: 30
Subtraktion af c og d er: 40
Produktion:
I ovenstående eksempel arver vi egenskaberne til klassen 'Operationer' i klassen 'MyClass'.
Derfor kan vi få adgang til alle de metoder eller udsagn, der findes i klassen 'Operationer' ved hjælp af MyClass-objekter.
# 2) Arvelighed på flere niveauer
I arvelighed på flere niveauer fungerer en eller flere klasser som en basisklasse.
Hvilket betyder, at den anden klasse arver egenskaberne i den første klasse, og den tredje klasse arver egenskaberne i den anden klasse. Så den anden klasse fungerer som både klasse forældre og børn.
Eksempel:
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()
Produktion:
Summen af a og b er: 30
Subtraktion af a og b er: 10
Multiplikation af a og b er: 200
Produktion:
I ovenstående eksempel arver klasse 'Subtraktion' egenskaberne til klasse 'Addition', og klasse 'Multiplikation' arver egenskaberne til klasse 'Subtraktion'. Så klasse 'Subtraktion' fungerer både som baseklasse og afledt klasse.
# 3) Flere arv
Klassen, der arver egenskaberne for flere klasser, kaldes Multiple Arv.
Yderligere læsning = >> Understøtter Java flere arv?
Eksempel:
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()
Produktion:
Summen af a og b er: 30
Subtraktion af c og d er: 10
Multiplikation af a og c er: 500
Produktion:
Metodeoverbelastning i Python
Flere metoder med samme navn, men med en anden type parameter eller et andet antal parametre kaldes Method overloading
Eksempel:
hvad har jeg brug for for at køre en jar-fil
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)
Produktion:
30
Produktion:
Produktion:
Metodeoverbelastning understøttes ikke i Python, for hvis vi ser i ovenstående eksempel, har vi defineret to funktioner med samme navn 'produkt', men med et andet antal parametre.
Men i Python opdateres den sidst definerede, og derfor bliver funktionsproduktet (a, b) ubrugeligt.
Metodeoverstyring i Python
Hvis en underklassemetode har samme navn, som er erklæret i superklassemetoden, kaldes den metodeoverstyring
For at opnå metode tilsidesættelse skal vi bruge arv.
Eksempel:
class A: def sayHi(): print(“I am in A”) class B(A): def sayHi(): print(“I am in B”) ob = B() ob.sayHi()
Produktion:
Jeg er i B.
Produktion:
Data gemmer sig i Python
Data skjulning betyder at gøre dataene private, så de ikke er tilgængelige for de andre klassemedlemmer. Den kan kun fås i den klasse, hvor den er erklæret.
I python, hvis vi vil skjule variablen, skal vi skrive dobbelt understregning (__) før variabelnavnet.
Eksempel:
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
Produktion:
30
Traceback (seneste opkald sidst):
Fil 'DataHiding.py', linje 10, i
udskrive (uanset om det skal betales .__)
AttributeError: MyClass-forekomst har
ingen attribut '__num
Produktion:
Konklusion
Klassen er en plan eller skabelon, der indeholder alle detaljerne i et objekt, hvor objektet er en forekomst af en klasse.
- Hvis vi ønsker at få egenskaberne til en anden klasse ind i en klasse, kan dette opnås ved arv.
- Arv er af 3 typer - enkelt arv, arvelighed på flere niveauer og flere arv.
- Metodeoverbelastning understøttes ikke i Python.
- Metodeoverstyring bruges til at tilsidesætte implementeringen af den samme funktion, der er defineret i en anden klasse.
- Vi kan gøre dataattributterne private eller skjule dem, så de ikke er tilgængelige uden for den klasse, hvor de er defineret.
Vores kommende tutorial forklarer mere om yderligere Python-koncepter i detaljer !!
PREV-vejledning | NÆSTE vejledning
Anbefalet læsning
- Python-variabler
- Python DateTime-tutorial med eksempler
- Python-strengfunktioner
- Python-vejledning til begyndere (GRATIS GRATIS Python-træning)
- Python-kontroludtalelser (Python fortsætter, bryder og passerer)
- Python-operatører
- Python-funktioner
- Python introduktion og installationsproces