On Jul 14, 2010, at 3:53 AM, Steven D'Aprano wrote:
On Tue, 13 Jul 2010 19:26:34 +0200, Roald de Vries wrote:

Hi all,

I have two objects that should both be able to alter a shared float. So
i need something like a mutable float object, or a float reference
object. Does anybody know if something like that exists? I know it's not
hard to build, but I have a feeling that there should be a standard
solution to it.


One standard solution would be to wrap the float in a class as an
attribute.

E.g.: a class FloatWrapper with a get and set method.
Advantages: transparent, easy to implement
Disadvantages: for 'f = FloatWrapper' you have to use 'f.set(1.0)' instead of 'f = 1.0', which reads less easily (I think), and a mistake like assigning with 'f = 1.0' is easily made.

Another is to put it in a list:

myvalue = [3.1415]
pi = myvalue
myvalue[0] = 3.0
assert pi[0] == 3.0

I thought about something like that, but it's a bit misleading, because the value is actually a list.

An even better solution is to avoid the idiom of shared state in the
first place. Whenever people say "I need shared data", the chances are
very good that they don't *need* it at all, but merely *want* it because
that's the idiom they're used to.

I want to simulate a distributed algorithm, in which components can only communicate through shared state.

Cheers, Roald
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to