[Tutor] Class instantiation parameters
Jan Eden
lists at janeden.org
Sun Aug 7 16:23:46 CEST 2005
Hi Kent,
Kent Johnson wrote on 07.08.2005:
>>So how can I add the values of all the paramaters to my class
>>instance in one step?
>
>There was recently a long discussion of this on comp.lang.python.
>http://groups.google.com/group/comp.lang.python/browse_frm/thread/
>7346ad00a14e821a/9dc993d295475cac?q=locals()&rnum=15&hl=en#
>9dc993d295475cac
Thanks for this. I thought I could do it with the help of **args, but maybe I still think too much in Perl terms. It's a bit unexpected that this task asks for such an indirect approach.
In Perl, where my class instances are usually nothing but (blessed) hash references, a more verbose version of my actual method would read:
package NewClass;
...
sub new {
my $self = shift;
my $parameters = { @_ };
for (keys %$parameters) { $self->{$_} = $parameters->{$_};
}
My idea was to transfer the same technique to Python like this:
class NewClass:
def __init__(self, **parameters):
for i in parameters.keys(): self.i = parameters[i]
But the assignment in the for loop obviously does not work with instance attributes. I will have to read up some more about instance attributes.
Thanks again,
Jan
--
Bad spellers of the world Untie!
More information about the Tutor
mailing list