C.T. Matsumoto wrote:
Hello All,
I'm making a class and the parameters I'm feeding the class is getting
quite large. I'm up
to 8 now. Is there any rules of thumb for classes with a lot of
parameters? I was thinking
to put the parameters into a tuple and then in the __init__ of the
class, iterate over the tuple
and assign attributes.
Right now my class basically looks like this:
class Foo(object):
def __init__(self, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8):
...
There are several "tricks":
1. pass a tuple
class Foo(object):
def __init__(self, args):
....
Foo(("blah", 1, 2, 3))
bad, just adds more parentheses and make argument unpacking more
complex, as Dave Angel said, an exception would be if the values are
related like coordinates
2. use default value and named argument
class Foo(object):
def __init__(self, arg0="", arg1=1, arg2=2, arg3=3):
....
Foo("blah")
simplifies the caller, but the function signature is a bit complex. You
might want to split the signature into lines:
def __init__(self,
arg0="",
arg1=1,
arg2=2,
arg3=3):
3. use *args and/or **kwargs
class Foo(object):
def __init__(self, *args):
....
unpacking argument becomes complex
4. your class might be doing too much! Look for ways to split it into
several smaller classes
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor