Eh si’ … terminologia OOP … le funzioni ‘interne’ alla classe li chiamiamo ‘metodi’.
__init__(self, proteine=0, carboidrati=0, grassi=0, calcolaCalorie=calcolaCalorie):
Beh, tu puoi anche scriverlo cosi’ il costruttore, ma l’esempio del libro e’ un po’ diverso.
Non confondere i parametri del costruttore
(che qui sono: self, proteine, carboidrati, grassi, calcolaCalorie )
con gli attributi degli oggetti.
Gli attributi sono quelli che usi scrivendo un punto tra l’oggetto e l’attributo.
Ogni volta che scrivi, ad esempio
pasta.proteine
‘proteine’ e’ un attributo dell’ogggetto ‘pasta’.
Il costruttore serve a … costruire l’oggetto .
Quando scrivi:
pasta = Cibo(proteine=12, carboidrati=72, grassi=1)
tu richiami il costruttore con i parametri 12, 72, 1
Il fatto che i parametri abbiano i nomi degli attributi e che poi all’interno del costruttore i valori dei parametri siano assegnati agli attributi e’ solo un caso (anche se spesso si fa in questo modo)
Parametri del costruttore e attributi dell’oggetto sono cose separate.
Certo. E’ stato definito con questa istruzione:
Cibo.calcolaCalorie = calcolaCalorie
Tu dici giustamnte che calcolaCalorie() richiama una funzione esterna, ma questa e’ solo una informazione sulla ‘provenienza’ della funzione.
Alla classe non interessa da dove vengono i valori dei suoi attributi.
Lei sa solo che l’attributo ‘calcolaCalorie’ e’ un suo metodo.
… Almeno credo …
No, E’ un modo per dire che io del funzionamento di Python so ben poco … per cui posso benissimo dirti delle cavolate galattiche.
Soprattutto sulla programmazione ad oggetti …( non l’ho mai capita bene io per primo )
Mentre mi trovo piu’ a mio agio con i problemini geometrici degli script di Rhino.
Ma se a te adesso interessano queste cose, nessun problema.
Prendi solo con le molle quello che dico …
Ciao !