@Proprierty con valore

di Federico2839 il
3 risposte

Ciao 

Ho scoperto e sto utilizzando con soddisfazione questo <decoratore>

    @property
    def frame_capture(self, value) -> cv2:
        """
        
        :return: il frame con posizione pari a value catturato dal video
        """
        return self.video_caputure.set(cv2.CAP_PROP_POS_FRAMES, value)

Mi sono imbattuto nel caso riportato sopra

Probabilmente non è adatto in questo caso , ma come posso settare un valore e poi ritornare il risultato

Devo per forza creare un secondo metodo generico e poi leggere il suo risulto con un altro metodo decorato ?

Quello che ho scritto non rispetta la “firma” del metodo nel senso che non dovrei inserire quel 'value' tra parentesi

3 Risposte

  • Non ho capito bene la problematica, ad ogni modo ti basta una ricerca per ottenere una spiegazione dettagliata dell'uso di questo decorator.

    Leggi ad esempio questo articolo più che esaustivo.

  • Volevo capire come nel caso di @property ritornare un valore modificato  in base ad un altro valore passato nella funzione (value).

    Come vedi in quella funzione value determina quale frame catturare e in base a quello volevo ritornare il risultato

    Ma la domanda non ha alcun senso in quanto andrebbe al limite prima settato con @property.setter e poi letto successivamente

    property è fantastica perchè mi permette di richiamare valori infischiandome di come li ho ottenuti E della firma del metodo

    Almeno questo è quello che ho capito

  • 14/08/2023 - Federico2839 ha scritto:


    Volevo capire come nel caso di @property ritornare un valore modificato  in base ad un altro valore passato nella funzione (value).

    Le funzioni che hai relative alla property sono due: un getter e un setter, ossia una funzione che restituisce un valore, un'altra che lo imposta.

    Se hai una funzione che deve acquisire un valore per restituirlo modificato, a meno che questo non possa essere letto dalla proprietà stessa, non puoi restituirlo dal setter.

    14/08/2023 - Federico2839 ha scritto:


    property è fantastica perchè mi permette di richiamare valori infischiandome di come li ho ottenuti E della firma del metodo

    Le proprietà generamente sono identificatori che sembrano in tutto e per tutto semplici campi dell'oggetto, ossia variabili che appartengono all'istanza e ne definiscono lo stato, con la differenza che il loro valore non viene letto/scritto direttamente dal/nel campo, ma tramite l'intercessione dei due metodi sopra menzionati, che hanno rispettivamente il compito di restituire il valore e di impostarlo.

    Il vantaggio è che sembra di leggere o impostare quello che è un semplice campo, usando una normalissima sintassi di assegnazione, ma eventuali valori in uscita possono essere calcolati, da un lato, oppure validati e trasformati in ingresso.

    E' anche possibile eliminare il setter per realizzare una proprietà di sola lettura.

Devi accedere o registrarti per scrivere nel forum
3 risposte