Metodi Python orientati agli oggetti e loro parametri

0

Diciamo che ho una classe MyClass ... che ha un membro dati x

class MyClass1 :

    def __init__(self) :
        self.x = 1

Anche un metodo che fa qualcosa con x

Devo passare self.x come parametro?

class MyClass2 :

    def __init__(self) :
        self.x = 1

    def multiple_of_x(self, x) :
        return x * 2

O usa solo self.x nel metodo?

class MyClass3 :

    def __init__(self) :
        self.x = 1

    def multiple_of_x(self) :
        return self.x * 2

Chiedo quale sia l'approccio più corretto alla programmazione orientata agli oggetti?

    
posta TT4M.C 26.07.2016 - 00:42
fonte

2 risposte

0

Un oggetto è un fascio di stato e comportamento. Il comportamento (metodi) è intrinsecamente predefinito per accedere allo stato dell'oggetto (attributi). Come tale, dovrebbe usarlo ogni volta che può.

Pensaci in questo modo. Se avessi un metodo che ha richiesto quattro o cinque diversi pezzi di dati dall'oggetto per restituire un risultato, cosa accadrebbe in ciascuno dei tuoi casi? Nel primo caso, passeresti in quelle quattro o cinque cose, ogni volta. E dovresti ottenere queste informazioni dall'oggetto stesso, dando luogo a una chiamata del tipo:

myobj.myfunction(myobj.w, myobj.x, myobj.y, myobj.z)

Il secondo approccio ti darebbe questo:

myobj.myfunction()

Entrambi ti danno lo stesso risultato. Il primo ha un po 'più di flessibilità nel caso in cui tu voglia passare qualcosa che non fa parte dell'oggetto. Ma se è così, perché dovresti aver bisogno dello stato dell'oggetto in primo luogo?

    
risposta data 26.07.2016 - 02:39
fonte

Leggi altre domande sui tag