On Sep 2, 11:46 am, [EMAIL PROTECTED] (Alex Martelli) wrote:

> If you want to pass the attributes list it's simpler to do that
> directly, avoiding *a and **k constructs.  E.g.:
>
>   def __init__(self, a, b, attrs):
>     self.a = a
>     self.b = b
>     for attr in attrs:
>       name, value = attr.split('=')
>       setattr(self, name, value)
>

Alex:

Thanks for the example.  I too had been wondering about this for a
while.

One question though, which I haven't been able to find the answer from
scouring the internet.  What is the difference between calling
__setattr__ and setattr or __getattr__ and getattr, for that matter?

>From my example that follows, it doesn't seem to make a difference?

thanks

-- brian

class Person(object):

        def __init__(self):
                pass

        def newAttribute(self,name,value=None):
                setattr(self,name, value)

        def newAttribute2(self,name,value=None):
                self.__setattr__(name, value)

        def dump(self):
                for self.y in self.__dict__.keys():
                        yield self.y + "=" + getattr(self,self.y)

p1 = Person()
p1.newAttribute('fname','Brian')
p1.newAttribute('lname','Munroe')
p1.newAttribute2("mi","E")

for x in p1.dump():
        print x

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to