2010-05-14 20 views
5

Gördüğümüz gibi, gönderme yöntemi aşırı yüklenmiyor.Python socket.send'e aşırı yüklenemiyor

from socket import socket 

class PolySocket(socket): 

    def __init__(self,*p): 
     print "PolySocket init" 
     socket.__init__(self,*p) 

    def sendall(self,*p): 
     print "PolySocket sendall" 
     return socket.sendall(self,*p) 

    def send(self,*p): 
     print "PolySocket send" 
     return socket.send(self,*p) 


    def connect(self,*p): 
     print "connecting..." 
     socket.connect(self,*p) 
     print "connected" 

HOST="stackoverflow.com" 
PORT=80 
readbuffer="" 

s=PolySocket() 
s.connect((HOST, PORT)) 
s.send("a") 
s.sendall("a") 

Çıktı:

PolySocket init 
connecting... 
connected 
PolySocket sendall 
+0

İlgili: http://www.mail-archive.com/python- [email protected]/msg126934.html, http://groups.google.com/group/comp.lang.python/browse_thread/thread/391728cd442339c8/c0581b9ee5e7ceaf, http://groups.google.com/group/comp. lang.python/browse_thread/thread/76d27388b0d286fa/c9849013e37c995b – ChristopheD

cevap

8

Ben aslında ihtiyacım yok ve (sınıflara değil ama gerçek görev) görevi çözmek için başka yolları da vardır eminim.

Gerçekten, nesneyi alay vekil nesne ile gitmek gerekirse: Burada

from socket import socket 


class PolySocket(object): 
    def __init__(self, *p): 
     print "PolySocket init" 
     self._sock = socket(*p) 

    def __getattr__(self, name): 
     return getattr(self._sock, name) 

    def sendall(self, *p): 
     print "PolySocket sendall" 
     return self._sock.sendall(*p) 

    def send(self, *p): 
     print "PolySocket send" 
     return self._sock.send(*p) 

    def connect(self, *p): 
     print "connecting..." 
     self._sock.connect(*p) 
     print "connected" 

HOST = "stackoverflow.com" 
PORT = 80 
readbuffer = "" 

s = PolySocket() 
s.connect((HOST, PORT)) 
s.send("a") 
s.sendall("a") 

çıkışı var:

% python foo.py 
PolySocket init 
connecting... 
connected 
PolySocket send 
PolySocket sendall 
+0

Teşekkürler, bu harikaydı. –

İlgili konular