OGGETTI IN PYTHON

Iniziamo a parlare dell’argomento “Oggetti variabili e attributi in Python” .Il concetto più importante da apprendere per capire l’architettura dell’intero linguaggio di programmazione Python è che in questo linguaggio tutto è un oggetto. Anche i programmi che noi ad esempio scriviamo nella schell come serie di istruzioni sono oggetti. È fondamentale capire che Python assegna a tutte queste entità, quando il programma viene messo in esecuzione, delle strutture dati che appunto vengono chiamate oggetti. Gli oggetti in Python come già detto sono delle strutture di dati che almeno contengono:

  • Un identificativo assegnato dal runtime di Python che fa si che quell’Id sia unico durante tutta l’esecuzione del programma.
  • Un Type cioè un tipo che nei casi più semplici può essere un int o una stringa tanto per intenderci.
  • Un valore associato a questo Type ad esempio il literal 20 se il Type è un int o ‘Hello World!’ se il Type è una stringa.
Oggetti in Python

OGGETTI VARIABILI E ATTRIBUTI IN PYTHON – I LITERAL

Esplorando l’argomento “Oggetti variabili e attributi in Python” c’è da dire che Python possiede un insieme di tipi di dato che sono predefiniti nel linguaggio. Indicando semplicemente il valore letterale di un int o una string nel terminale, Python crea degli oggetti a partire dai Literal perché riesce ad inferire a runtime il tipo di questi oggetti. Se noi indichiamo un valore letterale 20 Python inferirà che si tratta di un int e a runtime genererà un’istanza di questo int a cui assegnerà una propria identità, il Type cioè int e il valore 20.

Literal

OGGETTI VARIABILI E ATTRIBUTI IN PYTHON – RECUPERARE TYPE E IDENTIFICATIVO

Type

OGGETTI VARIABILI E ATTRIBUTI IN PYTHON – LE VARIABILI

Per riferirsi direttamente ad un oggetto in Python non useremo la sua identità ma sfrutteremo le variabili che consistono nell’assegnare un nome ad un oggetto. Per associare un nome ad un oggetto si usa l’operatore di assegnazione.

x=10

Questa istruzione si legge in questo modo, crea un oggetto letterale di valore 10 e a questo oggetto assegna il nome x di modo che in altre parti di programma possiamo riferirci a 10 con il suo nome, cioè x.

  • Un nome di variabile valido in Python può contenere, caratteri Unicode, numeri, lettere e underscore.
  • Un nome di variabile non può iniziare con un numero.
  • Non può essere una parola riservata del linguaggio

I nomi assegnati agli oggetti in Python vengono dette variabili, qui bisogna fare attenzione. Tutti i linguaggi di programmazione hanno il concetto di variabile, però in Python ha un significato molto più semplice rispetto ad altri linguaggi. In Python una variabile è semplicemente un nome che viene associato ad un oggetto, è un nome che punta ad un oggetto e cosa molto importante una variabile non è un oggetto come in Java e C#.

x=10

x=’Python’

Questa è la prima conseguenza di come Python gestisce le variabili, abbiamo detto che il Type si riferisce all’oggetto e non alla variabile, quindi a x possiamo prima assegnare un int poi una stringa ed è perfettamente lecito. Essendo Python a tipizzazione dinamica, tutte le variabili sono, in realtà, puntatori a oggetto. Per esempio, se a una variabile è assegnato un valore numerico intero, subito dopo può essere assegnata una stringa o una lista. Gli oggetti sono invece dotati di tipo. Python dispone di vari modelli/librerie da utilizzare per fornire funzionalità senza dovere scrivere codice, come per esempio il modulo turtle graphics (per disegnare), copy (per creare copie di oggetti), random (per generare numeri casuali), sys(per interagire da riga di comandi con l’interprete) e time (per operare con unità di tempo e date).

TIPI BASE

Python mette a disposizione un gran numero di tipi base, essenzialmente numerici e contenitori. Caratteristica distintiva è il supporto nativo, oltre che ai classici tipi quali interi, floating point (numeri con virgola mobile) e stringhe alfanumeriche, anche a tipi più evoluti quali interi a grandezza arbitraria, numeri complessi, listeinsiemi e dizionari. Non è invece previsto un tipo specifico per i caratteri. Molti altri tipi sono importabili da librerie standard e nuovi tipi possono essere creati attraverso le classi.

Variabili e garbage collector

CALLABLE OBJECT

Facciamo una distinzione tra oggetti che sono non chiamabili e oggetti che lo sono (Callable). Gli oggetti non chiamabili sono quelli che solitamente rappresentano dati che contengono dei valori o anche multipli valori come nelle liste. Gli oggetti chiamabili non rappresentano dati ma codice eseguibile. Gli oggetti callable più comuni sono le funzioni. Vediamo un esempio.

Oggetti Callable

GLI ATTRIBUTI

Abbiamo visto che i valori di un oggetto possono essere singoli o multipli, inoltre i valori sono una diretta conseguenza del Type dell’oggetto, hanno una loro identità e aggiungiamo che gli oggetti in Python hanno una serie di attributi. Questi attributi possono essere dei dati o delle funzioni. Quando l’attributo è una funzione questo viene chiamato metodo. Per accedere agli attributi di un oggetto si usa la dot-notation.

a.b            a.b()

dove a è l’oggetto b nel primo caso rappresenta un dato, nel secondo un metodo. Scrivere con la notazione punto il codice ritorna il valore del dato (se l’attributo è un dato) o esegue del codice se l’attributo è un oggetto Callable cioè un metodo. In questo caso dobbiamo specificare una coppia di parentesi tonde se il metodo non prevede parametri, altrimenti indichiamo i parametri da fornire al metodo. Vediamo un esempio upper() che è una funzione predefinita che hanno tutte le stringhe e che trasforma il contenuto in maiuscolo.

funzione upper()

APPROFONDIMENTO

In Python, i concetti di oggetti, variabili e attributi sono fondamentali per comprendere la programmazione orientata agli oggetti (OOP). Ecco una descrizione di ciascuno:

Oggetti

In Python, tutto è un oggetto. Un oggetto può essere considerato un’istanza di una classe. Le classi definiscono il “tipo” di oggetto, stabilendo quali attributi (proprietà) e metodi (funzioni) un oggetto di quella classe possiede.

Esempio:

class Cane:
     def __init__(self, nome, razza):
        self.nome = nome
        self.razza = razza

     def abbaia(self):
        return “Woof!

mio_cane = Cane(“Fido“, “Golden Retriever“)

In questo esempio, mio_cane è un oggetto della classe Cane.

Variabili

Una variabile è un nome che fa riferimento a un valore in memoria. In Python, non è necessario dichiarare il tipo di una variabile: il tipo viene determinato automaticamente dal valore assegnato. Le variabili possono essere utilizzate per memorizzare riferimenti a oggetti.

Esempio:

x = 10
nome = “Alice
mio_cane = Cane(“Fido“, “Golden Retriever“)

Qui, x, nome e mio_cane sono variabili che fanno riferimento a un intero, una stringa e un oggetto Cane, rispettivamente.

Attributi

Gli attributi sono proprietà o variabili associate a un oggetto. Gli attributi possono essere di due tipi:

Attributi di istanza: Questi attributi sono definiti all’interno del metodo __init__ di una classe e appartengono all’istanza dell’oggetto.

Attributi di classe: Questi attributi sono condivisi tra tutte le istanze di una classe.

Esempio:

class Cane:
     specie = “Canis lupus familiaris# Attributo di classe

     def __init__(self, nome, razza):
        self.nome = nome # Attributo di istanza
        self.razza = razza # Attributo di istanza

In questo esempio, specie è un attributo di classe, mentre nome e razza sono attributi di istanza.

Uso degli Attributi

Puoi accedere agli attributi di un oggetto utilizzando la notazione punto (.):

print(mio_cane.nome) # Output: Fido
print(mio_cane.razza) # Output: Golden Retriever
print(mio_cane.specie) # Output: Canis lupus familiaris

Conclusione

Oggetti: Istanza di una classe che contiene dati (attributi) e funzionalità (metodi).

Variabili: Nomi che fanno riferimento a valori o oggetti in memoria.

Attributi: Proprietà associate a un oggetto, definite all’interno di una classe. Possono essere attributi di istanza o di classe.

Questi concetti lavorano insieme per permettere di costruire e manipolare strutture dati complesse in Python, facilitando lo sviluppo di software flessibile e manutenibile.

LINK AI POST PRECEDENTI

PREVIOUS POST LINKS

LINK AL CODICE GITHUB

GITHUB