• [^] # Re: Tk, averc n'importe quel langage par dessus.

    Posté par . En réponse au message débutant cherche piste pour apprendre a faire de petite gui. Évalué à 3.

    Je comprends le concept d'objet, ce que je ne comprends pas c'est pourquoi s'embêter à faire appel aux méthodes get_ et set_ plutôt que directement agir sur la propriété de l'objet ?

    Si c'est pour cacher une tambouille interne à l'objet qui doit se faire lorsqu'une propriété change, il y a plus adapté que cela en python, avec les properties (ou les décorateurs @property, @x.setter et @x.getter) :

    class Voiture(object):
     def __init__(self, marque, couleur, taille):
     self.couleur = couleur
     self.marque = marque
     self._taille = taille
     @property
     def taille_m(self):
     """taille de la voiture en mètres"""
     return self._taille
     @taille_m.setter
     def taille_m(self, value):
     self._taille = value
     @property
     def taille_ft(self):
     return self._taille / 0.3048
     @taille_ft.setter
     def taille_ft(self, value):
     self._taille = value * 0.3048
    ma_voiture = Voiture("Honda", "Verte", 2)
    print ma_voiture.taille_m # 2
    print ma_voiture.taille_ft # 6.56167979003
    ma_voiture.taille_m = 3
    print ma_voiture.taille_m # 3
    print ma_voiture.taille_ft # 9.84251968504
    ma_voiture.taille_ft = 8
    print ma_voiture.taille_m # 2.4384
    print ma_voiture.taille_ft # 8.0
    
    

    Cela permet de ne pas écrire de fonction get et set sur chaque propriété qui n'en a pas besoin, et si jamais on doit faire quelque chose sur ces valeur, on ne change pas tout le reste du code.

    Personnellement je préfère appeler MonObjet.foo et faire des MonObjet.foo = x plutôt que des MonObjet.get_foo() et MonObjet.set_foo(x) en permanence…

    Je suis à coté de la plaque ?