Concetti Chiave

  • Un oggetto rappresenta un valore incapsulato in un'identità, mentre una classe è una collezione di oggetti che condividono struttura e metodi.
  • Le istanze sono oggetti di una classe che ereditano la struttura e i metodi definiti dalla classe stessa.
  • I metodi in una classe richiedono almeno un parametro, convenzionalmente chiamato "self", che rappresenta l'istanza dell'oggetto.
  • I metodi dunder (double underscore) hanno scopi specifici e includono funzioni come __init__, __str__, e operatori di confronto.
  • I metodi speciali possono ridefinire operazioni numeriche e di accesso a sequenze, permettendo un'interazione personalizzata con gli oggetti.

Concetti di base delle classi

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


Domande da interrogazione

  1. Qual è la definizione di una classe in programmazione orientata agli oggetti?
  2. Una classe è una collezione di oggetti che condividono struttura e metodi, fungendo da modello per creare istanze, ovvero oggetti che seguono le definizioni stabilite dalla classe.

  3. Cosa sono i metodi dunder e a cosa servono?
  4. I metodi dunder, o "double underscore", sono metodi speciali in Python che hanno un prefisso e un suffisso di doppio underscore. Sono utilizzati per scopi specifici, come l'inizializzazione (__init__) o la rappresentazione in stringa (__str__).

  5. Quali operazioni numeriche possono essere ridefinite tramite metodi speciali in una classe?
  6. Le operazioni numeriche che possono essere ridefinite includono addizione (__add__), sottrazione (__sub__), moltiplicazione (__mul__), e divisione (__truediv__), tra le altre, permettendo di personalizzare il comportamento degli oggetti durante queste operazioni.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community