
Programmazione a oggetti
in python tutto è un oggetto di classe
lo stesso type di un elemento è una classe
Definizione di classe
# la classe minima
class Oggetto:
pass
Dipartimento di Informatica
I.I.S. "Blaise Pascal" - Reggio Emilia
Programmazione a oggetti
in python tutto è un oggetto di classe
lo stesso type di un elemento è una classe
Definizione di classe
# la classe minima
class Oggetto:
pass
Definizione di classe
class Punto:
__x = None # per convenzione attributi "privati"
__y = None
def __init__(self, x, y):
self.__x = x
self.__y = y
p = Punto(1, 4)
print(p)
print(p.__dict__)
<__main__.Punto object at 0x7f13c9e574c0>
{'_Punto__x': 1, '_Punto__y': 4}
Definizione di classe
class Punto:
__x = None # per convenzione attributi "privati"
__y = None
def __init__(self, x, y):
self.__x = x
self.__y = y
def setX(self, x):
self.__x = x
def getX(self):
return self.__x
p = Punto(1, 4)
print(p.getX())
p.setX(10)
print(p.getX())
1
10
Si può far meglio
class Persona:
_age = None # per convenzione attributi "privati"
_name = None
def __init__(self, a, p):
self._age = a
self._name = p
@property
def age(self):
return self._age
@age.setter
def age(self, v):
self._age = v
p1 = Persona(30, "Marco")
print(p1)
print(p1.__dict__)
print(p1.age)
p1.age=35
print(p1.__dict__)
print(p1.age)
<__main__.Persona object at 0x7f0e69831f40>
{'_age': 30, '_name': 'Marco'}
30
{'_age': 35, '_name': 'Marco'}
35
primo step di esercizi
15 minuti per lavorare!!!
class NumeroRazionale:
__numeratore = None
__denominatore = None
def __init__(self, n, d):
if not isinstance(n, int):
raise Exception("valore non valido per numeratore ")
if not isinstance(d, int):
raise Exception("valore non valido per denominatore ")
if d == 0:
raise Exception("valore 0 non valido per denominatore ")
self.__numeratore = n
self.__denominatore = d
def get_valore_reale(self):
return float(self.__numeratore)/self.__denominatore
def get_inverso(self):
return NumeroRazionale(self.__denominatore, self.__numeratore)
def riduci_minimi_termini(self):
for i in range(2, min(self.__numeratore, self.__denominatore)+1):
if self.__numeratore%i == 0 and self.__denominatore%i == 0:
self.__numeratore = int(self.__numeratore/i)
self.__denominatore = int(self.__denominatore/i)
def __repr__(self):
return f"[{self.__numeratore}/{self.__denominatore}]"
nr = NumeroRazionale(2, 3)
print(nr)
print(nr.get_valore_reale())
print("==========================")
nr2 = NumeroRazionale(4, 6)
print(nr.get_valore_reale())
print(nr2)
nr2.riduci_minimi_termini()
print(nr2)
print(nr.get_valore_reale())
print("==========================")
try:
nr3 = NumeroRazionale(4, 0)
except Exception as e:
print("Errore rilevato : ", e)
nr4 = NumeroRazionale(3, 8)
nr5 = nr4.get_inverso()
print("Inverso di ", nr4 , "è", nr5)
secondo step di esercizi
15 minuti per lavorare!!!
terzo step di esercizi
codice,descrizione,costo,giacenza
001,Mouse,9.99,4
002,Tastiera,19.99,5
003,Monitor,79.99,8
## PER IMPORTARE VIA CSV a DIZIONARIO
import csv
with open('prodotti.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile, delimiter=',')
for row in reader:
print(row)
Crea una classe Magazzino che gestisca una lista di Prodotto con i seguenti metodi
Leggere il file prodotti.csv, parsare l'input, generare l'oggetto Prodotto e valorizzarlo con gli attributi indicati
Dipartimento di Informatica
I.I.S. "Blaise Pascal" - Reggio Emilia