Metodo di classe con o senza ritorno

di il
2 risposte

Metodo di classe con o senza ritorno

Buongiorno ,

Programmo per diletto.

Quando scrivo uno  o più metodi di una classe sono sempre indeciso se ritornare il risultato dell'operazione o aggiornare 

la variabile di istanza.

Nel secondo caso il codice risulta a me meno chiaro perchè non ritorna nulla e vedo un susseguirsi di chiamate al metodo esempio:

class Myclass:
 def __init__(self, nome_azione: str)
 	self.nome_azione = nome_azione
 	self.nome_azione_finale = None
 	
 def metodo1(self)
 	self.resultato1 = self.nome_azione + 1
 	
 def metodo2(self)
 	self.resultato2 = (self.resultato1 + 1) * 2

 def metodo3(self)
 	self.nome_azione_finale = self.resultato2 + 1 * 3
 	
 def metodo4(self) -> int:
  	return self.risultato1+	self.risultato2+self.risultato3
  	
 myclass = Myclass(150)
 print(myclass.metodo4())
 

Ora ho improvvisato un codice con poco senso , ma il punto è che devo fare delle operazioni consecutive ed il risultato di ogni operazione

me lo porto dietro  oppure durante le operazioni di devo richiamare un'altra variabile di istanza ( esempio self.nome_azione_finale)

Se invece decido di ritornare ogni risultato dal un metodo vedrò una cosa credo brutta 

Proabilmente non mi sono spiegato bene perchè ho un pò di confusione. Se avete un pò di tempo fatemi delle domane per corte

sia

Grazie

2 Risposte

  • Re: Metodo di classe con o senza ritorno

    11/08/2023 - Federico2839 ha scritto:


    Quando scrivo uno  o più metodi di una classe sono sempre indeciso se ritornare il risultato dell'operazione o aggiornare la variabile di istanza. […]

    La scelta di restituire un valore o modificare l'istanza dipende dalla finalità del metodo che viene invocato.

    Supponiamo di realizzare una classe di nome Rectangle che rappresenta una forma rettangolare da mostrare sullo schermo e di crearne una istanza per disegnarla e manipolarla.

    Come campi questa avrà ipoteticamente delle proprietà tipo left, top, height, width o qualcosa del genere, che ne definiscono posizione e dimensioni nello spazio.

    A questo punto, supponendo di introdurre un metodo move() che sposta la figura, questa mi aspetto che vada a prendere valori come parametri opzionali e che modifichi i campi di cui sopra (in particolare left e top) per spostare la figura nella nuova posizione.

    Se invece introduco un metodo getArea(), mi aspetto che questo acceda alle proprietà height e width restituendo l'area come valore di ritorno, un dato che può essere calcolato “al volo” e non va memorizzato all'interno dell'istanza.

    Quello che fa un metodo può essere una delle due soluzioni, o anche tutte e due (può modificare lo stato dell'istanza e restituire anche un valore), nessuna è corretta o errata in senso assoluto (se non andiamo a scomodare la programmazione funzionale, che è un'altra cosa).

    Quale delle due, o tutte e due, dipende dal contesto e dall'utilità.

    Approfondisci il paradigma della OOP per acquisire ulteriori informazioni a riguardo: la codifica in Python è solo una implementazione dei principi usando uno specifico linguaggio, ma le linee guida valgono in generale per tutti i linguaggi, salvo alcuni molto specifici.

    Ciao! :)

  • Re: Metodo di classe con o senza ritorno

    Ok Grazie Marco

    proseguo

Devi accedere o registrarti per scrivere nel forum
2 risposte