python oops concepts python classes
OOP-koncept i Python: Python-klasser och objekt, arv, överbelastning, åsidosättande och datadolding
I föregående handledning har vi några av Ingång / utgång som Python tillhandahåller.
Vi lärde oss hur man använder dessa funktioner för att läsa data från användaren eller från de externa källorna och också hur man skriver dessa data till externa källor. Vi lärde oss också hur man delar upp en enorm kod i mindre metoder med hjälp av funktioner och hur man ringer eller får åtkomst till dem.
Ytterligare läsning => Explicit utbud av gratis Python-träningsövningar
I denna handledning kommer vi att diskutera Advanced Python-konceptet som kallas OOP och olika typer av oops-koncept som finns tillgängliga i Python och hur och var de ska användas.
Vad du kommer att lära dig:
- Titta på VIDEO-handledning
- Klasser och objekt
- Konstruktör i Python
- Arv
- Metodöverbelastning i Python
- Metod Överstyrning i Python
- Data gömmer sig i Python
- Slutsats
- Rekommenderad läsning
Titta på VIDEO-handledning
Video nr 1: Klass, objekt och konstruktör i Python
Video # 2: Begreppet arv i Python
Video nr 3: Överbelastning, överstyrning och datadöljande i Python
Klasser och objekt
- Python är ett objektorienterat programmeringsspråk där programmering betonar mer på objekt.
- Nästan allt i Python är objekt.
Klasser
Klass i Python är en samling objekt, vi kan tänka på en klass som en ritning eller skiss eller prototyp. Den innehåller alla detaljer i ett objekt.
I det verkliga exemplet är Animal en klass, eftersom vi har olika slags djur i världen och alla dessa tillhör en klass som heter Animal.
Definiera en klass
I Python bör vi definiera en klass med hjälp av nyckelordet 'klass'.
Syntax:
class classname: #Collection of statements or functions or classes
Exempel:
class MyClass: a = 10 b = 20 def add(): sum = a+b print(sum)
I exemplet ovan har vi förklarat klassen som heter 'Myclass' och vi har deklarerat och definierat vissa variabler respektive funktioner.
För att komma åt de funktioner eller variabler som finns i klassen kan vi använda klassnamnet genom att skapa ett objekt av det.
vad kan du göra med c ++
Låt oss först se hur du kommer åt dem som använder klassnamn.
Exempel:
class MyClass: a = 10 b = 20 #Accessing variable present inside MyClass print(MyClass.a)
Produktion
10
Produktion:
Föremål
Ett objekt är vanligtvis en förekomst av en klass. Den används för att komma åt allt som finns i klassen.
Skapa ett objekt
Syntax:
variablename = classname
Exempel:
ob = MyClass()
Detta skapar ett nytt instansobjekt med namnet 'ob'. Med hjälp av detta objektnamn kan vi komma åt alla attribut som finns i klassen MyClass.
Exempel:
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
tjugo
30
Produktion:
Konstruktör i Python
Constructor i Python är en speciell metod som används för att initiera medlemmarna i en klass under körning när ett objekt skapas.
I Python har vi några speciella inbyggda klassmetoder som börjar med en dubbel understrykning (__) och de har en speciell betydelse i Python.
Namnet på konstruktören kommer alltid att vara __init __ ().
Varje klass måste ha en konstruktör, även om du inte skapar en konstruktör uttryckligen skapar den en standardkonstruktör av sig själv.
Exempel:
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:
Summan av a och b är: 27
Produktion:
Om vi observerar i exemplet ovan kallar vi inte metoden __init __ (), eftersom den kommer att anropas automatiskt när vi skapar ett objekt till den klassen och initialiserar datamedlemmarna om sådana finns.
Kom alltid ihåg att en konstruktör aldrig kommer att returnera några värden, därför innehåller den inte några returuttalanden.
Arv
Arv är ett av de mest kraftfulla begreppen för OOP.
En klass som ärver egenskaperna hos en annan klass kallas Inheritance.
Klassen som ärver egenskaperna kallas underklass / underklass och klassen från vilken egenskaper ärvs kallas överordnad klass / basklass.
Python tillhandahåller tre typer av arv:
- Enstaka arv
- Arv på flera nivåer
- Flera arv
Rekommenderad läsning = >> Arv i Java
# 1) Enkel arv
I enstaka arv ärver en klass endast egenskaperna för en klass.
Exempel:
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:
Summan av a och b är: 30
Subtraktion av c och d är: 40
Produktion:
verktyg för att övervaka cpu temp och fläkthastighet
I exemplet ovan ärver vi egenskaperna för klassen 'Operations' till klassen 'MyClass'.
Därför kan vi komma åt alla metoder eller uttalanden som finns i klassen 'Operations' med hjälp av MyClass-objekten.
# 2) Arv på flera nivåer
I arv på flera nivåer fungerar en eller flera klasser som en basklass.
Vilket innebär att den andra klassen kommer att ärva egenskaperna för den första klassen och den tredje klassen kommer att ärva egenskaperna för den andra klassen. Så den andra klassen kommer att fungera som både föräldraklassen och barnklassen.
Exempel:
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:
Summan av a och b är: 30
Subtraktion av a och b är: 10
Multiplikationen av a och b är: 200
Produktion:
I exemplet ovan ärver klass 'Subtraktion' egenskaperna för klass 'Addition' och klass 'Multiplication' kommer att ärva egenskaperna för class 'Subtraction'. Så klass 'Subtraktion' kommer att fungera som både basklass och härledd klass.
# 3) Flera arv
Klassen som ärver egenskaperna hos flera klasser kallas multipel arv.
Ytterligare läsning = >> Stöder Java flera arv?
Exempel:
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:
Summan av a och b är: 30
Subtraktion av c och d är: 10
Multiplikationen av a och c är: 500
Produktion:
Metodöverbelastning i Python
Flera metoder med samma namn men med en annan typ av parameter eller ett annat antal parametrar kallas Method overloading
testa datagenereringsverktyg öppen källkod
Exempel:
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:
Metodöverbelastning stöds inte i Python, för om vi ser i exemplet ovan har vi definierat två funktioner med samma namn ”produkt” men med ett annat antal parametrar.
Men i Python uppdateras den senast definierade, varför funktionsprodukten (a, b) blir värdelös.
Metod Överstyrning i Python
Om en underklassmetod har samma namn som deklarerats i superklassmetoden kallas den Method overriding
För att uppnå metodöverstyrning måste vi använda arv.
Exempel:
class A: def sayHi(): print(“I am in A”) class B(A): def sayHi(): print(“I am in B”) ob = B() ob.sayHi()
Produktion:
Jag är i B.
Produktion:
Data gömmer sig i Python
Döljande av data innebär att göra uppgifterna privata så att de inte blir tillgängliga för de andra klassmedlemmarna. Den kan endast nås i klassen där den deklareras.
I python, om vi vill dölja variabeln, måste vi skriva dubbel understrykning (__) före variabelnamnet.
Exempel:
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
Spårning (senaste samtalet senast):
Fil ”DataHiding.py”, rad 10, in
skriva ut (oavsett om .__)
AttributeError: MyClass-instans har
inget attribut ‘__num
Produktion:
Slutsats
Klassen är en ritning eller mall som innehåller alla detaljer i ett objekt, där objektet är en förekomst av en klass.
- Om vi vill få egenskaperna för en annan klass i en klass kan detta uppnås genom arv.
- Arv är av tre typer - enkel arv, arv på flera nivåer och flera arv.
- Metodöverbelastning stöds inte i Python.
- Metodöverstyrning används för att åsidosätta implementeringen av samma funktion som definieras i en annan klass.
- Vi kan göra dataattributen privata eller dölja dem så att de inte blir tillgängliga utanför klassen där den är definierad.
Vår kommande handledning kommer att förklara mer om ytterligare Python-koncept i detalj !!
PREV-handledning | NÄSTA självstudie
Rekommenderad läsning
- Python-variabler
- Python DateTime-handledning med exempel
- Python-strängfunktioner
- Python-handledning för nybörjare (praktisk Python-träning)
- Python Control Statements (Python Continue, Break and Pass)
- Python-operatörer
- Python-funktioner
- Python introduktions- och installationsprocess