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 :

tester le type d'un objet


Sujet :

Python

  1. #1
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut tester le type d'un objet
    Bonjour,
    Dans l'exemple suivant je voudrais connaitre le type d'objet afin de faire test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>>inter=p1.intersection(p2)
    >>>print "inter=",inter
    >>>print "type inter=",type(inter)
    >>># si c'est un polygone
    >>>if type(inter) == ????:
    >>>...
     
    inter=POLYGON ((211463.0000000000000000 22266.0000000000000000, 214867.0000000000000000 22344.0000000000000000, 214853.0000000000000000 22273.0000000000000000, 211463.0000000000000000 22266.0000000000000000)) 
    type inter=<class 'shapely.geometry.polygon.Polygon'>
    J'ai essayé avec avec inspect.isclass() et isinstance() mais je ne sais pas quoi mettre comme arguments.
    merci

  2. #2
    Membre éclairé
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Points : 773
    Points
    773
    Par défaut
    on n'écrit pas
    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    a = 3*2
    print a
     
    #ou  bien
    print 3*2
    ensuite "type" n'est pas un statement, mais - selon le contexte - une fonction, ou une classe.

    • type(obj) permet d'afficher la classe de l'objet.
    • isinstance(classA | objA,classB) permet de sire si classA (ou objA) fait parti de la famille de classB.
    • issubclass(classA, classB) fonctionne comme isinstance, à la différence que classA ne peut être qu'une classe.


    D'une manière générale, type() est plus restrictif que isinstance() ou issubclass(). Il n'y a pas de meilleure fonction qu'une autre, mais des situations qui font de l'une d'elles la plus adaptée.

  3. #3
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut
    oui, j'avais fait une faute de frappe.
    merci de votre intérêt, mais vous ne répondez pas sur le fond : je ne sais pas nommer la classe dont je ne possède uniquement ce qui m'est renvoyé par la méthode type():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>>print type(MonPolygon)
    <class 'shapely.geometry.collection.GeometryCollection'>
    Comment tester qu'un objet AutreFigure est de ce type ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if type(AutreFigure) == ???
    merci

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 046
    Points : 1 376
    Points
    1 376
    Par défaut
    tester le contenu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monobjet.__class__.__bases__
    peut être ?

  5. #5
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut
    grâce à plxpy, j'ai compris que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>>print type(MonPolygon)
    <class 'shapely.geometry.collection.GeometryCollection'>
    # le nom de la classe à utiliser est GeometryCollection
    if is instance(AutreFigure,GeometryCollection):
       print "AutreFigure est une collection..."

  6. #6
    Membre éclairé
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Points : 773
    Points
    773
    Par défaut
    Citation Envoyé par awalter1
    if isinstance(AutreFigure,GeometryCollection):
    Citation Envoyé par N.tox
    isinstance(classA | objA, classB) permet de sire si classA (ou objA) fait parti de la famille de classB.
    Il me semblait bien avoir répondu pourtant, malgré une faute de frappe

    La console interactive est un outil inestimable lorsque l'on apprend quelque chose en python, et encore plus lorsque l'on commence avec le langage. Il ne faut pas avoir peur de s'en servir et de tester ce qui vous passe par la tête.

    Par exemple:
    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
    19
    20
    21
    22
    >>> class Foo(object): pass
     
    >>> type(Foo())
    <class '__main__.Foo'>
    >>> Foo
    <class '__main__.Foo'>
    >>> type(Foo()) is Foo
    True
    >>> type(Foo()) == Foo
    True
    >>> isinstance(Foo(),Foo)
    True
    >>> help(isinstance)
    Help on built-in function isinstance in module builtins:
     
    isinstance(...)
        isinstance(object, class-or-type-or-tuple) -> bool
     
        Return whether an object is an instance of a class or of a subclass thereof.
        With a type as second argument, return whether that is the object's type.
        The form using a tuple, isinstance(x, (A, B, ...)), is a shortcut for
        isinstance(x, A) or isinstance(x, B) or ... (etc.).
    Joyeux futurs tests

  7. #7
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 784
    Points : 7 043
    Points
    7 043
    Par défaut
    @N.tox a répondu, mais je le mets un peu plus dans le contexte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> class Polygone() : pass
    ... 
    >>> polyg1 = Polygone()
    >>> polyg2 = Polygone()
    >>> isinstance(polyg1, Polygone)
    True # polyg1 est bien un polygone
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  8. #8
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isinstance(classA | objA, classB)
    Mon pb était que je ne savais pas quoi mettre pour classB par rapport à mon exemple
    Cdlt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tester le type d'un objet personnalisé
    Par thefutureisnow dans le forum Débuter
    Réponses: 1
    Dernier message: 18/05/2011, 11h58
  2. Tester le type d'un objet
    Par senacle dans le forum Zope
    Réponses: 1
    Dernier message: 09/10/2007, 09h10
  3. Tester le type d'un objet de formulaire
    Par Sytchev3 dans le forum Langage
    Réponses: 4
    Dernier message: 06/08/2007, 15h13
  4. Comment detecter le type d'un objet?
    Par nickylarson dans le forum C++Builder
    Réponses: 3
    Dernier message: 24/06/2003, 16h23
  5. [VB6] [Interface] Tester le Type de Controle
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 16/09/2002, 10h51

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