Forum >> Principianti >> In Python tutto e' un oggetto...

Pagina: 1

Salve a tutti,
Sono un neofita alla ricerca di un chiarimento sulla seguente domanda:

Python e' un linguaggio di programmazione in cui ogni entita' (lista, classe, funzione, metodo, variabile, che altro?) e' un definita come un oggetto: attraverso la funzione type() si riscontra che le varie entita' sono oggetti derivanti da una certa classe. Inoltre esistono metodi built-in predefiniti (oggetti anch'essi) da applicare ai vari oggetti.


Ma il termine "oggetto" usato sopra non e' esattamente quello che si intende quando si parla di programmazione ad oggetti (OOP), direi. Un linguaggio di programmazione, Python in questo caso, e' indipendente dal paradigma di programmazione (funzionale, procedurale, OOP, ecc.). Quindi, nel caso di Python, il paradigma OOP non e' intrinseco a Python eppure sempra che la struttura di ogni cosa in Python sia un oggetto cosi' come predica OOP...

Avreste qualche parola di chiarimento in merito a questa confusione fra oggetti di Python e oggetti di OOP?


Grazie!
Ciao caro e benvenuto.

Non c'è nessuna confusione, in Python indicando i dati, spesso si usa proprio il temine oggetto, proprio perché in Python tutto è un oggetto.

Ma cosa sono questi oggetti? Semplice sono un insieme di dati ed algoritmi in stretta relazione fra loro. Parli di type ed è quello il senso, se ci fai caso il type di una stringa, ad esempio, ti restituirà proprio <class 'str'>. Pensa ai dati come agli attributi di queste classi e gli algoritmi come gli strumenti che permettono di far funzionare le classi stesse, i suoi metodi quindi. Attributi e metodi, direi che ora è tutto più chiaro. Semplificando tutto ulteriormente, possiamo definire come una stringa sia l'oggetto della classe str di Python, cosa che puoi applicare praticamente a tutto, una lista per la classe list, un dizionario per la classe dict.... e via verso nuove avventure.

Che dici ora ti ritrovi un po' di più?

Cya
Grazie!!! Tutto piu' limpido.

Quindi tutto e' trattato e chiamato ""oggetto" in Python.

Sarebbe pero' sbagliato dire che Python e la programmazione ad oggetti OOP sono intimamente collegati e pensare che OOP e' "incorporato" in Python: si puo' programmare in Python anche senza fare OOP, direi, anche se la terminologia oggetto, metodo,classe, tipica di OOP, rimane parte della struttura interna di Python. Ci sono altro paio di argomenti che mi tormentano. Faro' un post separato...


Grazie!

Confuso83
Quando programmi in python, fai *sempre* programmazione a oggetti, nel senso (stretto) che stai sempre manipolando oggetti, qualunque cosa tu stia facendo, perché tutti i dati in pyhton sono rappresentati come oggetti.


Tuttavia, quando si parla di "programmazione a oggetti", in genere si intende in senso più ampio: ovvero, quello stile di programmazione per cui tu *modelli da solo i tuoi oggetti*, li crei e li manipoli... quindi (in python) scrivendo codice che comprende diverse dichiarazioni "class", diverse istanziazioni di oggetti e così via.


In questo senso più ampio, puoi sicuramente usare python senza fare "programmazione a oggetti"... per esempio limitandoti a scrivere solo delle funzioni senza mai dichiarare e usare le classi.


Tuttavia tieni conto che gran parte delle librerie che trovi in giro (e gran parte della libreria standard stessa) sono scritte nello stile della programmazione a oggetti... il che significa che, se vuoi usarle nel tuo codice, ti tocca comunque studiarti un po' di cose sulle classi, etc.... e quindi, in un certo senso, se nel tuo codice utilizzi delle librerie a oggetti, allora anche il tuo codice diventa, almeno in parte, "codice a oggetti".


E comunque, non dimenticarti che, in senso stretto, "in python tutto è un oggetto"... quindi puoi anche scrivere una funzione e "apparentemente" non fare OOP, ma... guarda che *anche* una funzione in Python è un oggetto! Anche se, usandola, non te ne accorgi.



Pagina: 1



Esegui il login per scrivere una risposta.