04.08.2014 Views

o_18ufhmfmq19t513t3lgmn5l1qa8a.pdf

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

xii<br />

■CONTENTS<br />

■CHAPTER 8 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159<br />

What Is an Exception? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159<br />

Making Things Go Wrong . . . Your Way . . . . . . . . . . . . . . . . . . . . . . . . . . 160<br />

The raise Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160<br />

Custom Exception Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162<br />

Catching Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162<br />

Look, Ma, No Arguments! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163<br />

More Than One except Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164<br />

Catching Two Exceptions with One Block . . . . . . . . . . . . . . . . . . . . . . . . 164<br />

Catching the Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165<br />

A Real Catchall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165<br />

When All Is Well . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166<br />

And Finally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168<br />

Exceptions and Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168<br />

The Zen of Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169<br />

A Quick Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171<br />

New Functions in This Chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171<br />

What Now? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171<br />

■CHAPTER 9 Magic Methods, Properties, and Iterators . . . . . . . . . . . . . . 173<br />

Before We Begin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173<br />

Constructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174<br />

Overriding the Constructor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175<br />

Calling the Unbound Superclass Constructor . . . . . . . . . . . . . . . . . 177<br />

Using the super Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178<br />

Item Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179<br />

The Basic Sequence and Mapping Protocol . . . . . . . . . . . . . . . . . . 180<br />

Subclassing list, dict, and str . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182<br />

More Magic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184<br />

Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184<br />

The property Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185<br />

__getattr__, __setattr__, and Friends. . . . . . . . . . . . . . . . . . . . . . 188<br />

Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189<br />

The Iterator Protocol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190<br />

Making Sequences from Iterators. . . . . . . . . . . . . . . . . . . . . . . . . . . 191<br />

Generators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191<br />

Making a Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191<br />

A Recursive Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192<br />

Generators in General. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194<br />

Avoiding Generators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!