__del__ pattern?
bryanjugglercryptographer at yahoo.com
bryanjugglercryptographer at yahoo.com
Tue Aug 16 13:12:32 EDT 2005
Tom Anderson wrote:
> On Mon, 15 Aug 2005, Chris Curvey wrote:
>
> > Is there a better pattern to follow than using a __del__ method? I just
> > need to be absolutely, positively sure of two things:
>
> An old hack i've seen before is to create a server socket - ie, make a
> socket and bind it to a port:
>
> import socket
>
> class SpecialClass:
> def __init__(self):
> self.sock = socket.socket()
> self.sock.bind(("", 4242))
> def __del__(self):
> self.sock.close()
>
> Something like that, anyway.
>
> Only one socket can be bound to a given port at any time, so the second
> instance of SpecialClass will get an exception from the bind call, and
> will be stillborn. This is a bit of a crufty hack, though - you end up
> with an open port on your machine for no good reason.
Much worse, it's a bug. That pattern is for programs that need to
respond at a well-known port. In this case it doesn't work; the
fact that *someone* has a certain socket open does not mean that
this particular program is running.
--
--Bryan
More information about the Python-list
mailing list