python oops concepts python classes
Concetti OOP in Python: classi e oggetti Python, ereditarietà, sovraccarico, sovrascrittura e occultamento dei dati
Nel tutorial precedente abbiamo alcuni dei file Operazioni di input / output fornito da Python.
Siamo venuti a sapere come utilizzare queste funzioni per leggere i dati dall'utente o da fonti esterne e anche come scrivere quei dati in fonti esterne. Inoltre, abbiamo imparato come dividere un codice enorme in metodi più piccoli usando le funzioni e come chiamarle o accedervi.
Ulteriori letture => Gamma esplicita di tutorial gratuiti di formazione su Python
In questo tutorial, discuteremo il concetto di Advanced Python chiamato OOP e diversi tipi di concetti di oops disponibili in Python e come e dove usarli.
dazn Germania senza VPN
Cosa imparerai:
- Guarda i tutorial VIDEO
- Classi e oggetti
- Costruttore in Python
- Eredità
- Overload del metodo in Python
- Override del metodo in Python
- Nascondere i dati in Python
- Conclusione
- Lettura consigliata
Guarda i tutorial VIDEO
Video # 1: classe, oggetti e costruttore in Python
Video # 2: concetto di ereditarietà in Python
Video # 3: sovraccarico, sovrascrittura e occultamento dei dati in Python
Classi e oggetti
- Python è un linguaggio di programmazione orientato agli oggetti in cui la programmazione pone maggiormente l'accento sugli oggetti.
- Quasi tutto in Python sono oggetti.
Classi
La classe in Python è una raccolta di oggetti, possiamo pensare a una classe come un progetto, uno schizzo o un prototipo. Contiene tutti i dettagli di un oggetto.
Nell'esempio del mondo reale, Animal è una classe, perché abbiamo diversi tipi di animali nel mondo e tutti questi appartengono a una classe chiamata Animal.
Definizione di una classe
In Python, dovremmo definire una classe utilizzando la parola chiave 'class'.
Sintassi:
class classname: #Collection of statements or functions or classes
Esempio:
class MyClass: a = 10 b = 20 def add(): sum = a+b print(sum)
Nell'esempio sopra, abbiamo dichiarato la classe 'Myclass' e abbiamo dichiarato e definito rispettivamente alcune variabili e funzioni.
Per accedere a quelle funzioni o variabili presenti all'interno della classe, possiamo utilizzare il nome della classe creandone un oggetto.
Innanzitutto, vediamo come accedere a coloro che utilizzano il nome della classe.
Esempio:
class MyClass: a = 10 b = 20 #Accessing variable present inside MyClass print(MyClass.a)
Produzione
10
Produzione:
Oggetti
Un oggetto è solitamente un'istanza di una classe. Serve per accedere a tutto ciò che è presente all'interno della classe.
Creazione di un oggetto
Sintassi:
variablename = classname
Esempio:
ob = MyClass()
Questo creerà un nuovo oggetto istanza chiamato 'ob'. Utilizzando questo nome oggetto possiamo accedere a tutti gli attributi presenti all'interno della classe MyClass.
Esempio:
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()
Produzione:
10
venti
30
Produzione:
Costruttore in Python
Il costruttore in Python è un metodo speciale utilizzato per inizializzare i membri di una classe durante il runtime quando viene creato un oggetto.
In Python, abbiamo alcuni metodi di classe incorporati speciali che iniziano con un doppio trattino basso (__) e hanno un significato speciale in Python.
Il nome del costruttore sarà sempre __init __ ().
Ogni classe deve avere un costruttore, anche se non crei un costruttore in modo esplicito, creerà da solo un costruttore predefinito.
Esempio:
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()
Produzione:
La somma di aeb è: 27
Produzione:
Se osserviamo nell'esempio precedente, non stiamo chiamando il metodo __init __ (), perché verrà chiamato automaticamente quando creiamo un oggetto per quella classe e inizializziamo i membri dati se ce ne sono.
Ricorda sempre che un costruttore non restituirà mai alcun valore, quindi non contiene alcuna istruzione di ritorno.
Eredità
L'ereditarietà è uno dei concetti più potenti di OOP.
Una classe che eredita le proprietà di un'altra classe è chiamata Inheritance.
La classe che eredita le proprietà è chiamata classe / sottoclasse figlio e la classe da cui vengono ereditate le proprietà è chiamata classe genitore / classe base.
Python fornisce tre tipi di ereditarietà:
- Ereditarietà singola
- Ereditarietà multilivello
- Ereditarietà multipla
Lettura consigliata = >> Ereditarietà in Java
# 1) Ereditarietà singola
In Single inheritance, una classe erediterà le proprietà di una sola classe.
Esempio:
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()
Produzione:
La somma di aeb è: 30
La sottrazione di ced è: 40
Produzione:
che cosa sono qa e qc nei test del software
Nell'esempio precedente, stiamo ereditando le proprietà della classe 'Operations' nella classe 'MyClass'.
Quindi, possiamo accedere a tutti i metodi o istruzioni presenti nella classe 'Operations' utilizzando gli oggetti MyClass.
# 2) Ereditarietà multilivello
Nell'ereditarietà multilivello, una o più classi agiscono come una classe base.
Ciò significa che la seconda classe erediterà le proprietà della prima classe e la terza classe erediterà le proprietà della seconda classe. Quindi la seconda classe agirà sia come classe genitore che come classe figlio.
Esempio:
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()
Produzione:
La somma di aeb è: 30
La sottrazione di aeb è: 10
La moltiplicazione di aeb è: 200
Produzione:
Nell'esempio sopra, la classe 'Subtraction' eredita le proprietà della classe 'Addition' e la classe 'Multiplication' erediterà le proprietà della classe 'Subtraction'. Quindi la classe 'Sottrazione' agirà sia come classe base che come classe derivata.
# 3) Ereditarietà multipla
La classe che eredita le proprietà di più classi si chiama Multiple Inheritance.
Ulteriori letture = >> Java supporta l'ereditarietà multipla?
Esempio:
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()
Produzione:
La somma di aeb è: 30
La sottrazione di ced è: 10
La moltiplicazione di a e c è: 500
Produzione:
Overload del metodo in Python
Metodi multipli con lo stesso nome ma con un diverso tipo di parametro o un diverso numero di parametri sono chiamati Overload del metodo
Esempio:
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)
Produzione:
30
Produzione:
Produzione:
Il sovraccarico dei metodi non è supportato in Python, perché se vediamo nell'esempio sopra abbiamo definito due funzioni con lo stesso nome 'prodotto' ma con un diverso numero di parametri.
Ma in Python, l'ultima definizione verrà aggiornata, quindi la funzione prodotto (a, b) diventerà inutile.
Override del metodo in Python
Se un metodo di sottoclasse ha lo stesso nome dichiarato nel metodo della superclasse, si chiama Override del metodo
Per ottenere l'override del metodo dobbiamo usare l'ereditarietà.
Esempio:
class A: def sayHi(): print(“I am in A”) class B(A): def sayHi(): print(“I am in B”) ob = B() ob.sayHi()
Produzione:
Sono in B
Produzione:
Nascondere i dati in Python
Nascondere i dati significa rendere i dati privati in modo che non siano accessibili agli altri membri della classe. È possibile accedervi solo nella classe in cui è dichiarato.
In Python, se vogliamo nascondere la variabile, dobbiamo scrivere un doppio trattino basso (__) prima del nome della variabile.
Esempio:
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
Produzione:
perché c ++ è meglio di java
30
Traceback (la chiamata più recente per ultima):
File 'DataHiding.py', riga 10, in
print (se dovuto .__)
AttributeError: l'istanza MyClass ha
nessun attributo '__num
Produzione:
Conclusione
La classe è un modello o un modello che contiene tutti i dettagli di un oggetto, dove l'oggetto è un'istanza di una classe.
- Se vogliamo ottenere le proprietà di un'altra classe in una classe, questo può essere ottenuto tramite ereditarietà.
- L'ereditarietà è di 3 tipi: ereditarietà singola, ereditarietà multilivello e ereditarietà multipla.
- Il sovraccarico del metodo non è supportato in Python.
- L'override del metodo viene utilizzato per sovrascrivere l'implementazione della stessa funzione definita in un'altra classe.
- Possiamo rendere privati gli attributi dei dati o nasconderli in modo che non siano accessibili al di fuori della classe in cui sono definiti.
Il nostro prossimo tutorial spiegherà di più sui concetti aggiuntivi di Python in dettaglio !!
Tutorial PREV | PROSSIMO Tutorial
Lettura consigliata
- Variabili Python
- Tutorial Python DateTime con esempi
- Funzioni stringa Python
- Tutorial Python per principianti (formazione pratica GRATUITA su Python)
- Dichiarazioni di controllo Python (Python Continue, Break and Pass)
- Operatori Python
- Funzioni Python
- Introduzione a Python e processo di installazione