我确信您实际上并不需要它,而且还有其他方法来解决您的任务(不是子类化,而是真正的任务)。
如果您确实需要模拟对象,请使用代理对象:
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")
输出结果如下:
% python foo.py
PolySocket init
connecting...
connected
PolySocket send
PolySocket sendall