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 et accès aux méthodes de la classe par héritage


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 66
    Points : 39
    Points
    39
    Par défaut Classe et accès aux méthodes de la classe par héritage
    Bonjour à tous,

    Voilà je bosse sur une application graphique (PyQt/PySide) qui devra me permettre d'effectuer un certain nombre de test via la framework unittest ou PyUnit.

    Je dois utiliser pexpect pour lancer un serveur JTAG et lui envoyer des commandes, j'ai donc écrit la classe ModTelnet qui se connecte et ses méthodes send, receive, et stop pour respectivement envoyer/recevoir des commandes et arrêter la connection serveur comme le montre le code ci-dessous :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    """
    Communication with embedded board
    """
    import sys 
    import time
    import threading
    import Queue
     
    import pexpect
    import serial
    import fdpexpect
     
    from pexpect import EOF, TIMEOUT
     
     
    class ModTelnet():
        def __init__(self):    
     
        self.is_running = False
        self.HOST = 'localhost'
        self.port = '4444'
     
        def connect(self):
            #connect to board with JTAG and OpenOCD
    		self.is_running = True
    		password = 'xxxx'
    		myfile = 'openocd.cfg'
    		self._ocd = pexpect.spawn('sudo openocd -f %s' % (myfile))
    		i = self._ocd.expect(['password', EOF, TIMEOUT])
    		if i == 0:
    			self._ocd.sendline(password)
    			time.sleep(1.0)
    			self._connect_to_tn()
    		elif i == 1:
    			print ' *** OCD Connection failed *** '
    			raise Disconnected()
    		elif i == 2:
    			print ' *** OCD Connection timeout *** '
    			raise Timeout()  
     
        def _connect_to_tn(self):
             #connect to telnet session @ localhost port 4444
             self._tn = pexpect.spawn('telnet %s %s' % (self.HOST, self.port))
             condition = self._tn.expect(['>', EOF, TIMEOUT])
             if condition == 0:
    			print 'Telnet opened with success'
             elif condition == 1:
                print self._tn.before
                raise Disconnected()
             elif condition == 2: 
                print self._tn.before
                raise Timeout()
     
       def receive(self):
            #receive data (= msg) from telnet stdout
            data = [ EOF, TIMEOUT, '>' ]
            index = self._tn.expect(data, 2)
            if index == 0:
                return 'eof', None
            elif index == 1:
                return 'timeout', None
            elif index == 2:
                print 'success', self._tn.before.split('\r\n')[1:]
                return 'success',self._tn.before
     
        def send(self, command):
    	print 'sending command: ', command
            self._tn.sendline(command)
     
     
        def stop(self):
    	print 'Connection stopped !'
    	self._ocd.sendcontrol('c')
     
    if __name__ =='__main__':
        try:
    	tn = ModTelnet()
    	tn.connect()   
        except:
    	   print 'Cannot connect to board!'
    	   exit(0)
    C'est sûrement tout bête comme problème...mais je n'arrive pas à utiliser mes classes send, receive et stop sans générer une erreur du style
    "ModTelnet has no 'send' attribute"


    Alors comment doit-je faire? sachant qu'il me faut absolument pouvoir accéder à ces méthodes depuis un autre module ??

    Merci pour toutes vos réponses !
    Cordialement

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Il y a au moins deux choses à revoir:

    - indentation (__init__ et connect)

    - mélange entre les espaces et les tabulations pour l'indentation (4 espaces par niveau d'indentation recommandés)

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Bonjour,

    Il y a au moins deux choses à revoir:

    - indentation (__init__ et connect)

    - mélange entre les espaces et les tabulations pour l'indentation (4 espaces par niveau d'indentation recommandés)

    Tyrtamos
    Merci Tyrtamos,

    Le problème viens en réalité de la définition de ma classe en elle même :
    python cherche alors dans () la classe dont hérite ma classe alors que je devrais syntaxiquement écrire :
    C'est tout !

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

Discussions similaires

  1. Accès aux méthodes de la classe d'à côté
    Par rtg57 dans le forum Langage
    Réponses: 1
    Dernier message: 24/09/2010, 17h14
  2. [JSTL] Accès aux méthodes d'une classe
    Par libuma dans le forum Taglibs
    Réponses: 7
    Dernier message: 07/09/2010, 09h14
  3. Acces aux méthodes d'une Classe
    Par Sunchaser dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/08/2010, 21h51
  4. Problème d'accès aux méthodes d'une classe
    Par RR instinct dans le forum Langage
    Réponses: 5
    Dernier message: 26/06/2006, 14h51
  5. [TOMCAT] JSP problème d'accès aux méthodes d'une classes
    Par gunnm dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 22/05/2004, 14h02

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