assigning values in __init__

Steven D'Aprano steve at
Wed Nov 8 23:33:11 CET 2006

On Wed, 08 Nov 2006 10:55:57 -0500, John Salerno wrote:

> Ben Finney wrote:
>> John Salerno <johnjsal at> writes:
>>> But I do like Steve's suggestion that it's better to be explicit
>>> about each attribute, instead of just accepting a list of numbers
>>> (but I can't help but feel that for some reason this is better,
>>> because it's more general).
>> If you pass a *mapping* of the "I-might-want-to-add-more-in-the-future"
>> values, then you get both explicit *and* expandable, without an
>> arbitrary unneeded sequence.
> Do you mean by using the **kwargs parameter? 

Yes, that's what Ben is talking about. 

> If I do this, doesn't it 
> mean that *anything* could be added though? Misspelled words and 
> completely unrelated attributes as well?

**kwargs flexibility carries a risk. You may consider it worthwhile or not.

> Or does this matter as long as you are handling the processing yourself 
> internally and not allowing users access to the Character class?

Only you can decide whether **kwargs' convenience and flexibility
outweighs its risk.


More information about the Python-list mailing list