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.