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 :

Classe, typer les variables d'un objet.


Sujet :

Python

  1. #1
    Membre actif
    Avatar de Choupi
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 223
    Points : 235
    Points
    235
    Par défaut Classe, typer les variables d'un objet.
    Bonjour à tous,

    Je ne saisi pas bien l'usage de __init__(self,p1,p2....) Comment dois je faire pour forcer le type de p1 ou p2 ? de sorte qu'un utilisateur ne puisse pas mettre un int là ou j'attend une liste par exemple. Ca doit avoir un lien avec les variables privées de la classe, mais je ne trouve pas d'explication clair dans les tutos. Un vieux sujet parle de ce souci mais dit que c'est à l'utilisateur de savoir ce qu'il fait... dans mon cas l'utilisateur n'est pas le concepteur et ne doit pas avoir de choix, toute erreur doit lancer une exception...

    Merci pour vos futures explications,

    Choupi.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    Tu peux utiliser la fonction type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if type(p1) is not int: raise TypeError("p1 pas un entier")
    Ou encore la fonction isinstance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not isinstance(p1, int): raise TypeError("p1 pas un entier")

  3. #3
    Membre actif
    Avatar de Choupi
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 223
    Points : 235
    Points
    235
    Par défaut
    Merci !

    C'est exactement ce que je voulais faire

    Double post aussi, le nouveau forum est tres reactif () ! Merci à un moderateur de le supprimer.

  4. #4
    Membre actif
    Avatar de Choupi
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 223
    Points : 235
    Points
    235
    Par défaut
    Merci !

    C'est exactement ce que je voulais faire

    Maintenant je me pose qq questions de conceptions de ma classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    __init__(self,p1,p2,p3):
      self.__p1 = 0
      self.__p2 = ""
      self.__p3 = []
    Faut-il mieux creer trois fonctions setP1, P2, P3 privée qui vont tester les types, puis faire une fonction qui appelle setP1,P2,P3 ou alors tout faire en une fois ( en gros on descend jusqu'a quel niveau ? ) J'ai un objet contenant beaucoup de variables.

    En tout cas merci pour le isinstance.

    C.

Discussions similaires

  1. Typer les variables pour réussir les tests
    Par paladice dans le forum jQuery
    Réponses: 3
    Dernier message: 06/06/2013, 09h02
  2. Lister les variables d'un objet
    Par Nauja dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/07/2009, 23h13
  3. Typer des variables (tableau d'objet)
    Par amayii0 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 10/05/2008, 14h41
  4. Réponses: 5
    Dernier message: 28/02/2008, 14h35
  5. Réponses: 6
    Dernier message: 04/03/2007, 19h16

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