proposal: give delattr ability to ignore missing attribute

Fuzzyman fuzzyman at gmail.com
Tue Jun 10 13:31:39 EDT 2008


On Jun 10, 4:55 pm, Lie <Lie.1... at gmail.com> wrote:
> On Jun 10, 10:06 pm, Gary Wilson <gary.wil... at gmail.com> wrote:
>
>
>
> > I would like to propose that functionality be added to delattr to
> > handle the case when the attribute does not exist.
>

I've never once needed that functionality. In fact I very rarely use
delattr at all. I don't think there is a compelling enough use case
for adding this to Python.

Michael Foord
http://www.ironpythoninaction.com/


> > First off, getattr handles this nicely with the default parameter:
>
> > value = getattr(obj, 'foo', False)
>
> > instead of:
>
> > try:
> >     value = getattr(obj, 'foo')
> > except AttributeError:
> >     value = False
>
> > or:
>
> > if hasattr(obj, 'foo'):
> >     value = getattr(obj, 'foo')
> > else:
> >     value = False
>
> > And I think it makes sense to have something similar for delattr (name
> > the argument as you wish):
>
> > delattr(obj, 'foo', allow_missing=True)
>
> > instead of:
>
> > try:
> >     delattr(obj, 'foo')
> > except AttributeError:
> >     pass
>
> > or:
>
> > try:
> >     del obj.foo
> > except AttributeError:
> >     pass
>
> > or:
>
> > if hasattr(obj, 'foo')
> >     delattr(obj, 'foo')
>
> > For backwards compatibility, allow_missing would default to False.
>
> > Gary
>
> That doesn't need to be implemented internally, you could do it
> yourself in python.
>
> def my_delattr(obj, attr):
>     try:
>         delattr(obj, attr)
>     except AttributeError:
>         pass
> def my_getattr(obj, attr, default):
>     try:
>         return getattr(obj, attr)
>     except AttributeError:
>         return default




More information about the Python-list mailing list