Hi James, James Mills wrote: > Rather than present you with what I think (subjective) > might be a "good solution", why don't you look up in the > python documentation how you define methods and > what you can do with them (parameters-wise). > > I'll summarize: > > def foo(self, a, b, c): > ... > def foor(self, a, b, *args): > ... > def foo(self, a, b, c=None): > ... > def foo(self, a, b, *args, **kwargs): > ... > > There are probably other combinations, but these are > probably the most common. > > The point I'm trying to make here is that this is > really "up to you". > > Use a combination of variable arguments (*args) > and maybe some arguments with default values > (c=None) or just use **kwargs. Choice is yours :)
Thanks for your reply. I do understand all the different ways parameters can be passed and realize that it's up to me to choose that signature. But, mostly, I wanted advice on how to make this signature as intuitive as possible to a user. So, from my earlier example, a signature with positional args like this is a bad idea: class Envelope: def __init__(x_min, y_max, cell_size, *args): ... # are args 3 and 4 rows and columns or x_max, y_min? e = Envelope(10, 20, 1, 30, 10) so I know at least the last two args should probably be keywords, but a signature like this is somewhat confusing to me as well because it's not immediately clear to me what the first three parameters are by looking at the *call* (obviously by looking at the method you can figure it out). def __init__(x_min, y_max, cell_size, **kwargs): e = Envelope(10, 20, 1, n_cols=30, n_rows=10) e = Envelope(10, 20, 1, x_max=30, y_min=10) So I know I'm getting around to answering my own question, but the clearest way to me was to provide all keyword args. I just didn't know if this was too verbose from a user's standpoint. Really just a stylistic question that might be best left to the individual. thanks for help, matt _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor