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 :

importer des methodes


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    employé de bureau
    Inscrit en
    Décembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : employé de bureau
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 15
    Par défaut importer des methodes
    Bonjour!
    Je voudrais savoir si on peut créer une classe, écrire ses méthodes dans un autre fichier *py et importer ce fichier (from xxxx import *)?
    Merci de vos précieuses réponses

  2. #2
    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,

    Si tu cherches à savoir si on peut créer un objet (donc classe) dans un fichier ET ses méthodes dans un autre, je réponds pas directement. A la question, est-ce que l'on peut définir un objet dans autre fichier et l'utiliser, oui tout à fait.

    Je pense que c'est la première question qui t'intéresse. Tu dois pouvoir t'en sortir avec de l'héritage comme ceci:

    monModule.py:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Module():
        """ Module test """
        def __init__(self):
            # Le seul attribut de cet objet est une liste appelée "attribut"
            self.attribut = []
     
        def maMethode(self):
            # Cette methode affiche l'attribut de la classe
            print self.attribut
    main.py:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import monModule
     
    class obj(monModule.Module):
        """ Cette classe hérite de Module """
        def __init__(self):
            # On appel le constructeur de Module
            monModule.Module.__init__(self)
    Bon, dans l'exemple que je donne l'objet "obj" est créé à partir de l'objet "Module" du fichier monModule. Il hérite alors de tout ses attributs et méthodes. Tu peux alors ajouter de nouveaux attributs et méthodes si besoin est. Tu peux l'employer comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # Créer un objet:
    mon_objet = obj()
     
    # Affiche son attribut:
    mon_objet.maMethode()
    Voilà...

    Ju

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 48
    Par défaut
    Tu peux, mais c'est chiant à faire, ça n'a aucun intérêt et tu perdras l’auto complétion dans les IDE (entre autre...).

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 752
    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 752
    Par défaut
    Salut,
    Techniquement, on peut faire:
    module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def func(object,...):
         if object.X ==...:
             pass
    class module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import module
    class C:
          X = 'foo'
          func = module.func
    J'ai ajoute X pour montrer que "func" s'attend a ce que l'objet passe en paramètre ait ce X. On appelle çà un pré-requis ou une dépendance.

    Toute la difficulté de la POO sera de trouver la moins mauvaise association entre C et func pour qu'on ne passe pas trop de temps a trouver pourquoi le programme ne fonctionne plus après un changement de func ou de C.

    L’héritage permet de localiser les dépendances: si func dépend d'un objet ayant un attribut X, on peut écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class B:
         X = 'foo'
         def func(self,...):
             if self.X ==...:
                 pass
    class C(B):
         pass
    Tant que "self" est un B... on est sur qu'il aura un attribut X et on plus facilement gérer la dépendance entre func et X en mettant cela dans un même fichier.

    Comme une fonction peut avoir plusieurs paramètres, l’héritage est difficile a généraliser. Tester que les objets sont de type attendu via isinstance, vérifier qu'ils ont un attribut X, pour récupérer une valeur de X par défaut ou se vautrer plus élégamment?

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

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 12/02/2004, 21h55
  2. Export/import des logins et pwd
    Par Colargole dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 17/07/2003, 16h07
  3. importer des donnees dans interbase
    Par ms91fr dans le forum InterBase
    Réponses: 3
    Dernier message: 25/11/2002, 17h43
  4. Importer des fichiers textes délimités
    Par Invité dans le forum Outils
    Réponses: 2
    Dernier message: 23/09/2002, 13h56
  5. Importer des objets de 3dsMax
    Par Anonymous dans le forum OpenGL
    Réponses: 3
    Dernier message: 06/05/2002, 13h53

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