I'm not sure how to do this, or where to start looking for the right information, so any advice would be appreciated.
I want to implement a class with two (or more) different ways of looking at its attributes. One example of this might be complex numbers, which can be written in Cartesian form (x+yi) or polar form (r cis theta). (Yes, I know Python already has complex numbers. That was just an example.) Another might be 3D vectors, which can be written in Cartesian form [x, y, z], polar form [r, theta, z] or spherical polar [r, theta, phi]. It is important that there are no privileged attributes, e.g. in the above example, I can set any of x, y, z, r, theta or phi and all the others will automatically reflect the changes. A concrete, if simple, example will make it clear. Suppose I have a transformation (a,b) <-> (x,y) where: x = a+b y = a+2*b I create an instance spam, and set a and b: spam.a = 1 spam.b = 2 Now I should be able to read x and y: print spam.x, spam.y # prints 3 5 If I set attribute y: spam.y = 0 a and b automatically change to match: print spam.a, spam.b # prints 6, -3 Anyone have any good ideas for how I should implement this? Thanks, -- Steven. -- http://mail.python.org/mailman/listinfo/python-list
