what is the idiom for copy lots of params into self?

Luis M. González luismgz at gmail.com
Wed Jan 10 21:05:12 EST 2007


Emin wrote:
> Dear Experts,
>
> When writing large classes, I sometimes find myself needing to copy a
> lot of parameters from the argument of __init__ into self. Instead of
> having twenty lines that all basically say something like self.x = x, I
> often use __dict__ via something like:
>
> class example:
>      def __init__(self,a,b,c,d,e,f,g,h,i,j,k,l,m,n):
>          for name in
> ['a','b','c','d','e','f','g','h','i','j','k','l','m','n']:
>              self.__dict__[name] = locals()[name]
>
> This saves a lot of code and makes it easier to see what is going on,
> but it seems like there should be a better idiom for this task. Any
> suggestions?
>
> Thanks,
> -Emin


How about using variable length argumens?

class example:
	def __init__(self, *args):
		for i in args:
			self.__dict__[i] = i

x = example('uno','dos','tres')

Luis




More information about the Python-list mailing list