[Tutor] Class instantiation parameters

Alan G alan.gauld at freenet.co.uk
Sun Aug 7 19:15:07 CEST 2005


> page = Show(type=type, id=id)
>
> class Show:
>     def __init__(self, type, id):
>         self.id = id
> ...
>        return self

First a couple of comments.
You don't need to return self from __init__.
You can only instantiate Show *after* you've defined it.

> For two parameters, this is relatively simple. 
> But if I have for example 10 parameters on instantiation, 

10 *parameters* in the constructor is not that unusual. 
But at instantiation you would not normally expect to pass 
more than 4-6 *arguments*. The others would normally use 
default values.

**args is indeed the solution to this so you may have 
figured it all out already, but your terminology is
slightly confusing (because while it is strictly valid 
in what it says, but so unlikely in its meaning, that 
I suspect you are getting some of your terms mixed up?)

> assigning each value the the class object manually 
> will be really clumsy.

It's actually how most OOP languages do it! Perl is unusual 
baecause of its shortcuts and Python provides a half-way house
solution.

HTH,

Alan G
Author of the Learn to Program web tutor
http://www.freenetpages.co.uk/hp/alan.gauld


More information about the Tutor mailing list