By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
439,941 Members | 1,789 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 439,941 IT Pros & Developers. It's quick & easy.

proposal: give delattr ability to ignore missing attribute

P: n/a
I would like to propose that functionality be added to delattr to
handle the case when the attribute does not exist.

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
Jun 27 '08 #1
Share this Question
Share on Google+
2 Replies


P: n/a
Lie
On Jun 10, 10:06*pm, Gary Wilson <gary.wil...@gmail.comwrote:
I would like to propose that functionality be added to delattr to
handle the case when the attribute does not exist.

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
Jun 27 '08 #2

P: n/a
On Jun 10, 4:55*pm, Lie <Lie.1...@gmail.comwrote:
On Jun 10, 10:06*pm, Gary Wilson <gary.wil...@gmail.comwrote:
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
Jun 27 '08 #3

This discussion thread is closed

Replies have been disabled for this discussion.