On 6 Jun., 23:13, Tilman Kispersky <[EMAIL PROTECTED]> wrote: > I have python code in a class method translated from C++ that looks > sort of like this: > > >>> self.dydt[1] = self.a * (self.b * self.y[0] - self.y[1]) > > To make this more readable in C++ I had made macros to achieve this: > #define du (dydt[1]) > #define u (y[1]) > #define V (y[0]) > > du = a * (b * V - u); > > I realize the value of not having macros in Python. They've tripped > me up more than once in C++. My question is: > Is there any way to write a shorterhand more readable version of the > python code above? I'm doing several calculations one after the other > and some of the lines are quite long.
There is no entirely generic way but you can define a function that produces a string from an object that contains assignments and then use exec: def tovars(obj): return ";".join("%s=%s"%(n,v) for (n,v) in obj.__dict__.items()) # example class A:pass >>> a = A() >>> a.x = 0 >>> a.y = 1 >>> exec tovars(a) >>> y 1 >>> x 0 In your own case the tovars) function might be defined as: def tovars(obj): assign = [] assign.append("du = %s"%obj.dydt[1]) assign.append("u = %s"%obj.y[1]) assign.append("V = %s"%obj.y[0]) return ";".assign -- http://mail.python.org/mailman/listinfo/python-list