On Thu, 08 May 2008 23:35:04 +0200, Hrvoje Niksic wrote: > Marc 'BlackJack' Rintsch <[EMAIL PROTECTED]> writes: > >> On Thu, 08 May 2008 08:55:35 -0700, krustymonkey wrote: >> >>> The thing is, I'm not using slots by choice. I'm using the standard >>> lib "socket" class, which apparently uses slots. >> >> `socket` objects can't be pickled. Not just because of the >> `__slot__`\s but because a substantial part of their state lives in >> the operating system's space. > > Of course, if it makes sense to pickle sockets in the application, one > is can do so by defining __getstate__ and __setstate__:
When does it make sense!? > class Connection(object): > def __init__(self, host, port): > self.host = host > self.port = port > self.init_sock() > > def init_sock(self): > self.sock = socket.socket() > self.sock.connect((host, port)) > ... init communication ... But if you unpickle it while the original connection is still open it can't connect. If it's not open anymore, there's no one answering at host/port anymore or some program that has no idea what this connection is all about. Ciao, Marc 'BlackJack' Rintsch -- http://mail.python.org/mailman/listinfo/python-list