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 :

Twisted: Appel méthode dataReceived de la classe mère


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 42
    Par défaut Twisted: Appel méthode dataReceived de la classe mère
    Bonjour,

    J'utilise le framework twisted.

    Je cherche à surcharger un serveur TELNET lors de la réception de données.

    Lors de la réception de donnée, je souhaite effectuer le même traitement que la classe mère puis un traitement spécifique.

    Mon souci est que je n'arrive pas a appeler la méthode de la classe mère (j'ai fait plusieurs test):

    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
    from twisted.internet import reactor
    from twisted.conch.telnet import Telnet
    ...
    class TelnetServer (Telnet):
        """
        partie server     """
        def connectionMade (self):
            global myClient
            print "server connection made"
            myServer = self
     
            ...
     
        def dataReceived(self, data):
            "As soon as any data is received, write it back."
            print "dataReceived: vous avez envoye :", data
     
            ## appel de la methode mere dataReceived
     
            print super(Telnet,self)
            #Telnet.dataReceived(data)
            #print super(type(Telnet), TelnetServer).__class__
            #super(type(Telnet), TelnetServer).dataReceived(data)
     
            ## traitement "qui va bien"
    File "/usr/local/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 220, in _dataReceived
    rval = self.protocol.dataReceived(data)
    File "simpleproxytelnet.py", line 45, in dataReceived
    print super(Telnet,self)
    exceptions.TypeError: must be type, not classobj
    Avec

    Telnet.dataReceived(data) j'obtiens:

    Telnet.dataReceived(data)
    exceptions.TypeError: unbound method dataReceived() must be called with Telnet instance as first argument (got str instance instead)
    Avec

    Telnet.dataReceived(data) j'obtiens:


    File "simpleproxytelnet.py", line 48, in dataReceived
    super(type(Telnet), TelnetServer).dataReceived(data)
    exceptions.AttributeError: 'super' object has no attribute 'dataReceived'
    Comment appeler twisted.conch.telnet.Telnet.dataReceived ?
    Je viens du monde JAVA ou la méthode super permet ce genre de choses, mais là je sèche.

    Merci par avance,
    eric llusca.

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

    Sous Python2, super ne fonctionne qu'avec les class "new-style" i.e. dérivée d'object.
    C'est le sens du message d'erreur: exceptions.TypeError: must be type, not classobj
    Pour appeler la méthode de la class parente, il faut le faire "à la main", sans oublier "self":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Telnet.dataReceived(self, data)
    C'est entre autres pour s'affranchir de ces inconsistances que Python3 a été créé.

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

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 42
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Sous Python2, super ne fonctionne qu'avec les class "new-style" i.e. dérivée d'object.
    C'est le sens du message d'erreur: exceptions.TypeError: must be type, not classobj
    Pour appeler la méthode de la class parente, il faut le faire "à la main", sans oublier "self":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Telnet.dataReceived(self, data)
    C'est entre autres pour s'affranchir de ces inconsistances que Python3 a été créé.

    - W
    Merci, ça marche impeccable .

    Une erreur de débutant issu de JAVA.

    Eric.

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

Discussions similaires

  1. Appel d'un méthode fille via la classe mère
    Par Porkipic dans le forum Débuter
    Réponses: 10
    Dernier message: 26/12/2014, 15h46
  2. Méthode classe mère appelle méthode surdéfini de la classe fille
    Par djrilhouse dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 21/03/2013, 20h24
  3. Forcer l'appel aux fonctions de la classe mère
    Par ram-0000 dans le forum C++
    Réponses: 5
    Dernier message: 23/12/2008, 09h57
  4. Ne pas appeler le paintComponent de la classe mère
    Par brunoperel dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 09/12/2008, 20h36
  5. C++ : appel de constructeur de la classe mère
    Par ch4mp dans le forum BOUML
    Réponses: 2
    Dernier message: 02/01/2008, 14h35

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