Opening the book…
When you start working with objects, you are likely to encounter some new exceptions. If you try to access an attribute that doesn’t exist, you get an AttributeError:
>>> p = Point() >>> p.x = 3 >>> p.y = 4 >>> p.z AttributeError: Point instance has no attribute 'z'
If you are not sure what type an object is, you can ask:
>>> type(p) <class '__main__.Point'>
You can also use isinstance to check whether an object is an instance of a class:
>>> isinstance(p, Point) True
If you are not sure whether an object has a particular attribute, you can use the built-in function hasattr:
>>> hasattr(p, 'x') True >>> hasattr(p, 'z') False
The first argument can be any object; the second argument is a string that contains the name of the attribute.
You can also use a try statement to see if the object has the attributes you need:
try:
x = p.x
except AttributeError:
x = 0
This approach can make it easier to write functions that work with different types; more on that topic is coming up in Section 17.9.
This page titled 15.7: Debugging was last modified on Tue, 01 Dec 2020 03:30:58 GMT and is shared under a CC BY-NC 3.0 license and was authored, remixed, and/or curated by Allen B. Downey (Green Tea Press) via source content that was edited to the style and standards of the LibreTexts platform.
The book could not be loaded just now.