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 :

Faire ses classes


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Arpette en Mécatro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Arpette en Mécatro
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Par défaut Faire ses classes
    Bonjours

    Avant, tous, je sais que ce problème a déjà été traité au moins 2 fois sur le forum, mais je n'ai pas compris les réponses apportées

    Je dois pour mon travail faire une petite application en python (langage que je ne connaissais pas il y a 3 semaines). Après avoir sorti une programmation bourrin (tout dans le main) mais qui sortait des résultat, je souhaite faire ça un peu plus propre et utiliser des classes et objets (surtout que l'appli va surement grossir).

    Pour comprendre comment cela fonctionne, j'ai essayé ce code des plus basiques:

    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
    Compte.py
    class JeCompte: 
     
        def __init__(self): 
        "blabla" 
     
        def Mafonction(self,nombre):
        self.result = nombre * 2
        print("le resulat est:", self.result)
     
     
    Main.py
    from Compte import *
     
     
    nombre = input('introduit un nombre:', )
    toto = JeCompte
    toto.Mafonction(nombre)

    Le "hic" c'est le problème suivant:

    toto.Mafonction(nombre)
    TypeError: unbound method Mafonction() must be called with JeCompte instance as first argument (got int instance instead).


    Cela fait 2 jours que je m'arrache les cheveux dessus et j'espère ne pas atteindre la même capillarité qu'Homer Simpson ce qui à mon jeune âge aurait un impacte néfaste sur mon sex-appeal (je lutte déjà pour ne pas avoir le même ventre à bière).

    Merci pour votre future aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    toto = jeCompte()

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Et les tutos ils servent a quoi?
    D'autant qu'avec Python, vous avez la chance d'avoir des tutos pour débutant de chez débutants genre Swinnen et débutant en Python qui sait deja programmer avec le Python tutorial.

    Le pire est que tout est dans le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    toto = JeCompte
    toto.Mafonction(nombre)
    TypeError: unbound method Mafonction() must be called with JeCompte instance as first argument (got int instance instead).
    Essayez avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toto = JeCompte()
    toto.Mafonction(nombre)
    ou avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toto = JeCompte
    toto().Mafonction(nombre)
    Si vous ne comprenez pas encore les différences et ce que fait (), prenez le temps de lire le Swinnen.
    En 2 jours vous auriez eu le temps d'apprendre des bases sans vous mutiler les cheveux

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

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    En Python, il existe la fonction type(). Elle est très utile pour résoudre ce genre de problème et comprendre ce qui se passe.

    Voir par exemple ce code fait en mode interactif avec IDLE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >>> class Test:	def __init__(self):
    		print "Constructor"
     
     
     
    >>> toto = Test
    >>> type(toto)
    <type 'classobj'>
    >>> toto = Test()
    Constructor
    >>> type(toto)
    <type 'instance'>
    >>>
    On constate bien ici que toto n'est pas une instance à la première tentative mais la classe elle-même.

    PS : malgré ma capillarité, je conserve tout mon sex-appeal. Il suffit d'être beau (et d'avoir une tondeuse).

  5. #5
    Membre habitué
    Homme Profil pro
    Arpette en Mécatro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Arpette en Mécatro
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Par défaut
    C'était donc aussi bête que cela

    J'ai commandé ce livre (espérant qu'il soit bien fait) mais il n'est pas encore arrivé chez mon libraire et mes yeux saturent vites de lire sur un écran.


    Mon cuir chevelu et moi-même vous remercions

    Cordialement,

    un petit nouveau

  6. #6
    Membre émérite

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 662
    Par défaut
    Salut,

    Ne te décourage pas. Les remarques, même celles pas très diplomatiques, sont pour ton bien.

Discussions similaires

  1. Réponses: 8
    Dernier message: 18/04/2006, 12h16
  2. [POO] faire des classes en php
    Par gromit83 dans le forum Langage
    Réponses: 2
    Dernier message: 13/04/2006, 16h10
  3. Réponses: 4
    Dernier message: 15/04/2005, 12h19
  4. Bien faire ses sauvegardes
    Par Pigoulou dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 04/01/2005, 08h20

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