Classi in Python

In questa lezione svilupperemo alcuni esempi di classi in Python, al fine di consolidare quanto appreso nelle lezioni precedenti.

Classi in Python – primo esempio

Sviluppiamo dunque un primo esempio nel quale definiamo una classe Student:



class Student:
    def __init__(self, name, lastname, age):
        self.name = name
        self.lastname = lastname
        self.age = age

Salviamo questa classe nel file ‘Student.py‘ e poi in un altro file Python lo importiamo utilizzando from ed import.

Definiamo un’istanza di Student e poi la stampiamo:



from Student import *

student1 = Student("Nick", "Rossi", 23)

print("Name =", student1.name, "nLastname =", student1.lastname, "nAge =", student1.age)

In output avremo quindi:

Name = Nick
Lastname = Rossi
Age = 23

Stiamo associando alla variabile student1 un’istanza dell’oggetto Student.

Cosa succede se ad esempio omettiamo un qualsiasi parametro?

Facciamo dunque un esempio dove omettiamo di inserire l’età:



from Student import *

student1 = Student("Nick", "Rossi")

print("Name =", student1.name, "nLastname =", student1.lastname)

In questo caso il codice restituirà un errore:

...
TypeError: Student.init() missing 1 required positional argument: ‘age’

Questo perchè tutti i parametri sono obbligatori.

Come fare allora per rendere un parametro opzionale? Lo studieremo nel prossimo paragrafo.

Classi in Python – rendere un parametro opzionale

Per rendere un parametro opzionale, possiamo ad esempio assegnare un valore di default come ad esempio 0.



class Student:
    def __init__(self, name, lastname, age = 0):
        self.name = name
        self.lastname = lastname
        self.age = age

In questo modo quando definirò l’istanza student1 non si avrà più l’errore di prima:



from Student import *

student1 = Student("Nick", "Rossi")

print("Name =", student1.name, "nLastname =", student1.lastname)

L’output sarà quindi:

Name = Nick
Lastname = Rossi

Possiamo sempre assegnare un valore ad age, in modo da sovrascrivere il valore di default:



from Student import *

student1 = Student("Nick", "Rossi", 22)

print("Name =", student1.name, "nLastname =", student1.lastname, "nAge =", student1.age)

Possiamo assegnare i valori di default ad uno o più parametri.

Facciamo dunque un altro esempio:



class Student:
    def __init__(self, name = "Nick", lastname = "Rossi", age = 0):
        self.name = name
        self.lastname = lastname
        self.age = age

Definiamo un’istanza senza passare alcun valore ma lasciando i valori di default:



student1 = Student()

print("Name =", student1.name, "nLastname =", student1.lastname, "nAge =", student1.age,)

Conclusioni

In questa lezione abbiamo studiato alcuni esempi di classi in Python, nelle prossime lezioni vedremo come utilizzare i metodi delle classi.

Alcuni link utili

Indice tutorial sul linguaggio Python

Operazioni con i file in Python

Introduzione ai dizionari in Python

Funzione lambda in Python

Utilizzare Plot di Matplotlib

Quali sono i metodi delle liste

Memorizzare dati di input in un file di testo

Che cos’è il machine learning

Machine Learning in Python

Continua la lettura su: https://www.codingcreativo.it/classi-in-python/ Autore del post: Coding Creativo Fonte: https://www.codingcreativo.it

Articoli Correlati

Metodi delle classi in Python

In questa lezione studieremo come utilizzare i metodi delle classi in Python.Ad ogni metodo, come già abbiamo visto nelle lezioni precedente, viene innanzitutto passato il parametro self che rappresenta l’oggetto stesso, ma possiamo passare altri parametri.Riprendiamo l’esempio della lezione precedente in cui abbiamo definito una classe Student con gli attributi name, lastname ed age.Metodi delle classi in Python – primo esempioAggiungiamo alla classe Student un metodo che serve semplicemente a stampare la scheda di ciascun studente.Ecco dunque una possibile implementazione:

class Student:
def __init__(self, name, lastname, age):
self.name = name
self.lastname = lastname
self.age = age

def stampa_studente(self):
return f”Studente:nNome:{self.name}nCognome:{self.lastname}nAge:{self.age}”

Abbiamo realizzato il metodo stampa_studente tramite il quale ritorniamo i dati dello studente, così, diversamente a ciò che abbiamo realizzato nell’esempio precedente, basterà richiamare questo metodo per stampare tutti i dati dello studente.L’unico parametro che abbiamo passato al metodo stampa_studente è self, ma come già detto potremmo passare altri parametri.Adesso, dopo aver importato la classe Student, creiamo delle istanze di esempio e stampiamo i dati utilizzando il metodo stampa_studente.

from Student import *

student1 = Student(“Nick”, “Rossi”, 23)
student2 = Student(“Janet”, “Verdi”, 24)

print(student1.stampa_studente())
print(student2.stampa_studente())

Metodi delle classi in Python – secondo esempioRealizziamo un secondo esempio in cui definiamo una classe auto con attributi e metodi.Come attributi inseriamo solo la marca, la cilindrata e le porte. Poi aggiungiamo un semplice metodo immatricolazione che serve ad inserire la targa dell’auto.Ecco dunque una possibile implementazione:

class Auto:
def __init__(self, marca, cilindrata, porte):
self.marca = marca
self.cilindrata = cilindrata
self.porte = porte

def immatricolazione(self, targa = 0):
self.targa = input(“Inserisci la targa”)
return self.targa

Salviamo poi il file con il nome di ‘Auto.py‘.In un altro file richiamiamo la classe e definiamo un’istanza.Stampiamo la marca dell’auto. Poi, quando richiamiamo il metodo immatricolazione ci verrà richiesto di inserire la targa dell’auto. La stampiamo utilizzando print.Ecco quindi il codice di esempio:

from Auto import *

auto1 = Auto(“Fiat”, 90, 5)

print(auto1.marca)
print(“La targa dell’auto: “, auto1.immatricolazione())

ConclusioniIn questa lezione abbiamo utilizzando dei semplici metodi delle classi in Python, nelle prossime lezioni approfondiremo questo argomento.Alcuni link utiliIndice tutorial sul linguaggio PythonOperazioni con i file in PythonIntroduzione ai dizionari in PythonFunzione lambda in PythonUtilizzare Plot di MatplotlibQuali sono i metodi delle listeMemorizzare dati di input in un file di testo

Ordinare un dizionario in Python

Si può ordinare un dizionario in Python per chiave o per valore. Facciamo alcuni esempi pratici di ordinamento in Python in base alle nostre esigenze.

Tutti gli esempi proposti possono essere provati nel compiler online che troverete al seguente link: Python compiler online.

Primo esempio – Ordinare un dizionario in Python per chiave

In questo primo esempio dapprima creiamo un dizionario in Python. Abbiamo poi detto di ordinare per chiave, quindi dobbiamo decidere se seguire un ordine crescente o decrescente, infine dobbiamo richiamare la funzione sul dizionario.

Implementiamo, dunque, una prima soluzione. Per ordinare in senso crescente possiamo utilizzare la funzione sorted sul nostro dizionario, in questo modo:

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

for key in sorted(student):
print(key, student[key])

E se vogliamo un ordinamento decrescente? Basterà semplicemente utilizzare il parametro reverse della funzione sorted, impostandolo a False.

Ecco un esempio di dizionario ordinato in senso decrescente in Python:

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

for key in sorted(student, reverse = True):
print(key, student[key])

Secondo esempio – Ordinare un dizionario in Python per chiave

Cerchiamo adesso una seconda soluzione al problema proposto.

Innanzitutto potremmo ad esempio pensare di utilizzare il metodo keys() sul dizionario, ma cosa succede?

Proviamolo, dunque, con un esempio:

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

sorted_key = sorted(student.keys())

for element in sorted_key:
print(element)

In questo caso si avrà il seguente output:

age
hobby
mail
name
passion

Ovvero avremo le sole chiavi ordinate in senso crescente.

Quindi, anche se uso il metodo dict() non riuscirò in questo modo ad ordinare un dizionario in Python.

E se invece proviamo ad utilizzare il metodo values()?

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

sorted_values = sorted(student.values())

for element in sorted_values:
print(element)

Il risultato sarà il seguente:

29
Cristina
coding
codingcreatico@gmail.com
swim

Quindi se voglio ordinare un dizionario in Python per chiave cosa devo fare? Quale altra soluzione posso pensare?

Possiamo, ad esempio, utilizzare il metodo items(), che abbiamo studiato in questa lezione: items Python.

Ricordiamo inoltre che questo metodo è utilizzato per restituire l’elenco con tutte le chiavi del dizionario con i suoi rispettivi valori.

Dopo, possiamo nuovamente riconvertire le coppie di tuple in un dizionario utilizzando il metodo dict().

Ecco una possibile soluzione al nostro algoritmo:

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

sorted_student = sorted(student.items())
sorted_student_dict = dict(sorted(student.items()))

print(sorted_student_dict)

for element in sorted_student_dict:
print(element, ‘: ‘, sorted_student_dict[element])

Così abbiamo ottenuto tutte le coppie di tuple chiave, valori ordinate in senso crescente. Poi, convertiamolo in dizionario con il metodo dict(). Così riusciamo ad ordinare il dizionario in Python per chiave.

Utilizziamo una funzione per poterla poi utilizzare per creare l’ordinamento su più dizionari:

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

def sort_dict(d):
return dict(sorted(student.items()))

print(sort_dict(student))

Ordinare un dizionario in Python per chiave in senso decrescente

Questa volta utilizziamo il parametro reverse di sorted per creare un ordinamento decrescente sui dizionari. Infatti impostandolo a True l’ordinamento sarà decrescente. Di default il suo valore è False.

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

def sort_dict(d):
return dict(sorted(student.items(), reverse = True))

print(sort_dict(student))

Per completezza potremmo passare questo parametro anche alla funzione, in questo modo:

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

def sort_dict(d, rev):
return dict(sorted(student.items(), reverse = rev))

print(sort_dict(student, True))

Conclusione

In questa lezione abbiamo affrontato alcuni interessanti esempi su come ordinare un dizionario in Python per chiave, in ordine crescente e decrescente.

Alcuni link utili

Indice tutorial sul linguaggio Python

1 – Introduzione al linguaggio Python

2 – Le variabili

3 – Operatori aritmetici e di assegnazione

4 – Stringhe

5 – Casting

6 – Input e print

7 – Primi esercizi in Python

8 – Errori in Python

9 – Script Python

10 – Scambio di variabili

11 – Modulo math

Vuoi rimanere aggiornato sulle nuove tecnologie per la Didattica e ricevere suggerimenti per attività da fare in classe?

Sei un docente?

soloscuola.it la prima piattaforma
No Profit gestita dai

Volontari Per la Didattica
per il mondo della Scuola. 

 

Tutti i servizi sono gratuiti. 

Associazione di Volontariato Koinokalo Aps

Ente del Terzo Settore iscritta dal 2014
Tutte le attività sono finanziate con il 5X1000