Concetti Chiave
- Gli oggetti in Python sono istanze di classi, che condividono struttura e metodi definiti dalla classe stessa.
- Il parametro 'self' è utilizzato nei metodi per fare riferimento all'oggetto che riceve il metodo stesso.
- I metodi speciali, chiamati "dunder", come __init__ e __str__, servono per operazioni specifiche e devono essere utilizzati con attenzione.
- I metodi di confronto (__eq__, __ne__, ecc.) permettono di definire comportamenti personalizzati per operatori come == e !=.
- I metodi numerici (__add__, __sub__, ecc.) consentono di implementare operazioni aritmetiche personalizzate su oggetti.
Python - Classi e oggetti
Oggetto: valore incapsulato in una identità
Classi (tipo): collezione di oggetti che condividono struttura e metodi
Istanze = oggetti di una classe che condividono struttura e metodi definiti dalla classe
Class nome (nomiopzionali):
comandi
definizioni di metodi
Un metodo ha sempre almeno un parametro:
- il primo parametro di un metodo self per convenzione
- quando il metodo è invocato, quel parametro è legato all'oggetto che lo riceve
Metodi dunder
Il "double underscore" si pronuncia dunder
I metodi con dunder doppio (prefisso e postfisso)
__nome__
Per convenzione sono usati per scopi specifici e vanno usati solo per quello
__init__ (self, arg_opzionali) per inizializzare
__str__ (self, arg_opzionali) con print() restituisce una stringa
Confronto:
__eq__ (self, other) con ==, is
__ne__(self, other) con !=
__lt__(self, other) con
__gt__(self, other) con >
__le__(self, other) con
__ge__(self, other) con >=
Le operazioni booleane (and,or,not) non possono essere ridefinite via metodi speciali __xxx__
Numerici:
__pos__(self) con + unario
__neg__(self) con - unario
__abs__(self) con abs()
__round__(self, n) con round()
__floor__(self) con math.floor()
__ceil__(self) con math.ceil()
__trunc__(self) con math.trunc()
__add__(self, other) con +
__sub__(self, other) con -
__mul__(self, other) con *
__floordiv__(self, other) con //
__truediv__(self, other) con /
__pow__(self, other) con **
__iadd__(self, other) con la parte destra di +=
__isub__(self, other) con la parte destra di -= Accesso a sequenze:
__len__(self) con len()
__getitem__(self, key) con self[key]
__setitem__(self, key, value) con self[key]=value