DOMANDA Classi Python - studio guidato

Hirmia

Nuovo Utente
18
2
Ciao a tutti!!
Vorrei confrontarmi con voi sulle classi python. Continuo a ristudiare questo argomento e anche se mi è sempre più chiaro, continuo a cadere in errori.
Attualmente uso la versione 3.9 di python e riguardo l'uso delle classi, so che sono ''fabbriche'' in cui creare oggetti in base a un modello. Questo oggetto può avere delle istruzioni per il comportamento.
Ho scritto un codice riepilogativo.

Python:
class Dog:                  # def classe (fabbrica con modello)
    def __init__(self, name):   
        self.name=name       # crea attributo istanza [attivazione attributi]

    def print_name(self): # def metodo (istruzione) <-- accede all'attributo istanza
        print(self.name)

dog=Dog('Rex')  # crea istanza (oggetto che segue il modello)

dog.name   # accede all'attributo istanza & chiama valore -->'Rex'

dog.print_name()   # chiama istruzione & la applica all'istanza
                   # il "self" è riportato in automatico, si può omettere
                   # [stamperà --> Rex]

dog.name='Gigi'   # accede all'attributo istanza e cambiare valore:
                  # DICHIARARE ATTRIBUTI DI CLASSE
# oppure "attributo=valore"
                
dog.name          # chiama valore

dog.print_name()   # stampa valore      [perché è istruzione fabbrica]


'''
ATTRIBUTI:

"istanza"   <--- accessibili solo all'istanza
            <--- definito da __init--
            
"classe"    <--- accessibili da classe e sue istanze
            <--- dichiarato durante definizione classe
'''

class Dog:
    scientific_name='Canis lupus familiaris'   # attributo classe definito

    def __init__(self, name):
        self.name=name                         # attributo istanza dichiarato

    def print_name(self): # def metodo (istruzione) <-- accede all'attributo istanza
        print(self.name)

rex = Dog('Rex')   
fido = Dog('Fido')                               # create due istanze

rex.name                   # chiamare valori istanze   -->'Rex', 'Fido'
fido.name

Dog.scientific_name        # chiamare valore classe da classe
                           #  --->'Canis lupus familiaris'
                           # [si è acceduto agli ATTRIBUTI di ISTANZA & CLASSE

rex.scientific_name        # chiamare valore classe da istanze
fido.scientific_name

rex.print_name()

Fin qui tutto bene. Giusto? Cosa mi sfugge?
 

Andretti60

Utente Èlite
6,440
5,091
Guarda, ti do il mio parere personale, per me Python è un buon linguaggio per imparare a programmare in maniera procedurale (come in C) ma PESSIMO per imparare OOP e usare le classi. Agli inizi io consiglio sempre Java (è gratis e disponibile in ogni piattaforma).
 

Ibernato

Utente Èlite
4,330
2,047
OS
Windows 10 Pro / Ubuntu 22.04
Guarda, ti do il mio parere personale, per me Python è un buon linguaggio per imparare a programmare in maniera procedurale (come in C) ma PESSIMO per imparare OOP e usare le classi. Agli inizi io consiglio sempre Java (è gratis e disponibile in ogni piattaforma).
Quoto
 

Hirmia

Nuovo Utente
18
2
Ciao e grazie per i vostri consigli. Li ho presi seriamente in considerazione e ho iniziato a dare almeno uno sguardo a java. Ho trovato del materiale da studiare sul sito html.it, può andare bene o consigliate altro?
Comunque riguardo python, non vorrei chiudere del tutto questa porta e ci terrei almeno a comprendere con voi se lo schemino del post di apertura è corretto. E cosa integrare/modificare.
 
U

Utente 125751

Ospite
Perchè Python è PESSIMO per imparare la OOP e le classi? :)

Perchè Java e non ad es. C#? :)
 

Andretti60

Utente Èlite
6,440
5,091
Perchè Python è PESSIMO per imparare la OOP e le classi? :)

Perchè Java e non ad es. C#? :)
Perché Python e' un linguaggio creato e nato per scripting, per la sua semplicità poi viene anche usato come linguaggio procedurale, e adesso hanno anche aggiunto le classi, ma sono difficili da scrivere e mantenere, la loto sintassi e' convoluta, invece di rendere la vita più semplice (che e' poi lo scopo dei linguaggi elevati di programmazione) la complicano. Ma usare classi in Python non significa espressamente programmare in OOP, in quanto si può continuare a scrivere in maniera procedurale (proprio come in C++ si può continuare a scrivere codice in C), facendo un casino.
Ecco perché preferisco Java, almeno quello e' nato come linguaggio OOP, lo si usa naturalmente come OOP, e per usarlo come linguaggio procedurale si fa fatica. In altre parole, mentre in Python si può "anche" usare le classi, in Java si e' "costretti".
E preferisco Java a C# perché e' gratuito e gira su ogni piattaforma, mentre C# e' proprietario (Microsoft) lo paghi e gira solo su Windows (in pratica e' Java per Windows).
 
  • Mi piace
Reazioni: Commodore74 e BAT

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!