IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Les propriétés en python


Sujet :

Python

Vue hybride

hichem0550 Les propriétés en python 11/03/2017, 15h29
wiztricks Salut, Avec Python2, les... 11/03/2017, 17h17
YCL-1 Bonjour, Je viens de... 11/03/2017, 17h23
hichem0550 Ok. ça marche bien 12/03/2017, 10h08
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2015
    Messages : 151
    Par défaut Les propriétés en python
    Bonjour,

    J'ai un problème avec la méthode mutateur de python.

    J'ai crée une classe que j'ai définit : Personne, ainsi deux méthodes : get_lieu_residence, set_lieu_residence pour avoir que j'ai bien compris le principe d'encapsulation dans python ou non.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    class Personne:
     
        def __init__(self, nom, prenom):
            self.nom=nom
            self.prenom=prenom
            self.age=27
            self._lieu_residence='Alger'
     
        def _get_lieu_residence(self):
            print("On accède à l'attribut lieu_residence !")
            return self._lieu_residence
     
        def _set_lieu_residence(self, nouvelle_residence):
            print("Attention, il semble que {} déménage à {}.".format(self.prenom, nouvelle_residence))
            self._lieu_residence = nouvelle_residence
     
        lieu_residence = property(_get_lieu_residence, _set_lieu_residence)
    Alors quand je vais crée mon objet que j'ai appelé Moi de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if __name__=='__main__':
     
        Moi = Personne('Hichem', 'Hichem')
        print ("Mes cordonnées sont :\n Nom : {}, Prenom : {}, Age : {}".format(Moi.nom, Moi.prenom, Moi.age))
    Et ainsi, si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        Moi.lieu_residence="Paris"
        print (Moi.lieu_residence)
    Je trouve pas que le programme a exécuté la méthode set_lieu_residence de mon objet car je vois pas le print

    "Attention, il semble que Hichem déménage à Paris

    Merci d'avance.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 699
    Par défaut
    Salut,

    Avec Python2, les property ne fonctionnent qu'avec des class héritant d'object i.e. new-style class.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur banc de test
    Inscrit en
    Mai 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur banc de test
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 199
    Par défaut
    Bonjour,

    Je viens de tester votre code avec Python 3.5.1 cela fonctionne, mais pas en 2.7.11

    Je viens de regarder la doc et la seule différence que je vois est l'absence d’héritage de object.

    Return a property attribute for new-style classes (classes that derive from object).
    Et effectivement ça fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class Personne(object):
    Edit: J'arrive trop tard

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2015
    Messages : 151
    Par défaut
    Citation Envoyé par YCL-1 Voir le message
    Et effectivement ça fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class Personne(object):
    Ok. ça marche bien

Discussions similaires

  1. Un nouveau shell combine Python et les propriétés de Bash
    Par Coriolan dans le forum Général Python
    Réponses: 10
    Dernier message: 14/06/2016, 13h30
  2. Réponses: 4
    Dernier message: 29/11/2004, 16h51
  3. Comment retrouver les propriétés d'un fichier ?
    Par JuanLopez1966 dans le forum x86 32-bits / 64-bits
    Réponses: 1
    Dernier message: 01/09/2004, 16h34
  4. Informations sur un exe (dans les propriétés windows)
    Par SteelBox dans le forum Windows
    Réponses: 6
    Dernier message: 06/07/2004, 18h20
  5. [VBA] Les propriétés de cellule dans Excel
    Par Kylen dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 05/07/2004, 23h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo