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

Reply via email to