How best to check for existance of an attribute?
Michael Hudson
mwh at python.net
Tue Dec 25 16:32:21 EST 2001
More information about the Python-list mailing list
Tue Dec 25 16:32:21 EST 2001
- Previous message (by thread): cheap German Python book at Ebay
- Next message (by thread): How best to check for existance of an attribute?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Roy Smith <roy at panix.com> writes: > I've got a function which augments an object passed to it by adding a new > attribute. Something like this: > > def addStuff (obj): > obj.newAttr = "stuff" > > I want it to be an error to call addStuff() more than once for a given > object. The simpliest way to do this would be with something like perl's > defined() function: > > def addStuff (obj): > if defined (obj.newAttr): > raise MultipleCallError > else: > obj.newAttr = "stuff" > > What's the best way to simulate defined()? By using hasattr? bash-2.00$ python -c "print hasattr.__doc__" hasattr(object, name) -> Boolean Return whether the object has an attribute with the given name. (This is done by calling getattr(object, name) and catching exceptions.) > I could think of a few possibilities. For example, either of the > following seem like they would work: [...] > def addStuff (obj): > try: > obj.newAttr > raise MultipleCallError > except AttributeError: > obj.newAttr = "stuff" This is more-or-less what hasattr does, but hasattr() almost certainly expresses your intent better. Cheers, M.
- Previous message (by thread): cheap German Python book at Ebay
- Next message (by thread): How best to check for existance of an attribute?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list