Alan Isaac wrote: > > At Friday 10/11/2006 14:11, Alan G Isaac wrote: > > >class Params: > > > def __init__(self,**kwargs): > > > #set lots of default values > > > ... > > > #set the deviations from defaults > > > self.__dict__.update(kwargs) > > > > > >Is this a reasonable approach overall? > > >(Including the last line.) > > > "Gabriel Genellina" wrote in message > news:[EMAIL PROTECTED] > > I'm not sure what you want to do exactly, but a class attribute acts > > as a default instance attribute. > > Yes. I am sorry my question was not clearer. > There are *many* parameters, > and the list can change, > so I want to avoid listing them all in the Param class's __init__ function, > using the strategy above. > > Q1: Is this approach reasonable? > (This is a newbie question about unforseen hazards.) > Q2: Is it horrible design to isolate the parameters in a separate class? > (Comment: currently several classes may rely on (parts of) the same > parameter set.) > > Thanks, > Alan Isaac Hi, I kind of had a similar problem when I was developing a 3d OO engine. I had many bigger things composed of lots of little things, and a lot of code was spent initializing the little things in constructors.
So I just passed a reference of the bigger thing to the little thing in its constructor, thus saving a lot of parameter passing and variable setup and copying. In the following example, big is passed to little's constructor, instead of all of big's variables. ie. class big: def __init__(self): self.v1 = ... self.v2 = ... self.objects = [] def assemble(self): self.objects.append(little(self, 1)) self.objects.append(little(self,2)) class little: def __init__(self, big, n): self.big = big # Now little has access to v1, v2 by self.big.v1 etc self.n = n # This makes it different def a_function(self): do_something(self.big.v1, self.big.v2) -- http://mail.python.org/mailman/listinfo/python-list