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.
Fin qui tutto bene. Giusto? Cosa mi sfugge?
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?