On Wed, Dec 31, 2008 at 5:04 AM, iu2 <isra...@elbit.co.il> wrote: <snip> > For the 2 targets I have the variables comm1 and comm2. They are of > some class I wrote, representing many properties of the communication, > including the IP address. > There is one function that sends data, and it receives a commX var > (comm1 or comm2) as the means for sending the data. > Before sending the data the function needs to initilze commX (if it is > still None), or creating it a new, if it sees that the IP for that > target has changed.
Based on the naming alone (though further corroborated by your details), I can recommend that you use a dictionary instead of variables for the commX-s. Basically, remove the comm1, comm2, etc variables and instead do (you might want to use a defaultdict or list rather than a plain dict): comms = {1 : MyComm(...), 2 : None} > > Something like this: > > def send_data(comm, data, current_ip_from_gui): > if comm is None: > # I want to assign comm a new MyComm > elif comm.ip != current_ip_from_gui: > # I want to re-assign a new MyComm that uses the new IP > comm.socket.SendTo(comm.addr, data) # eventually send the data Instead that becomes: def send_data(comms, id_num, data, current_ip_from_gui): if comms[id_num] is None: comms[id_num] = MyComm(...) elif comms[id_num].ip != current_ip_from_gui: comms[id_num] = MyComm(current_ip_from_gui, ...) comm = comms[id_num] comm.socket.SendTo(comm.addr, data) # eventually send the data <snip> > But I guess I can achieve this using a class holding my vars, maybe > like this: That's similar to what I'm suggesting, but mine has less indirection. Cheers, Chris -- Follow the path of the Iguana... http://rebertia.com -- http://mail.python.org/mailman/listinfo/python-list