CONTENTS 1 Introduction 3 1.1 Alternate Implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 Lexical analysis 5 2.1 Line structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.1 Logical lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.2 Physical lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.3 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.4 Encoding declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1.5 Explicit line joining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1.6 Implicit line joining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1.7 Blank lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1.8 Indentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1.9 Whitespace between tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2 Other tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3 Identifiers and keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3.1 Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.3.2 Reserved classes of identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.4 Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.4.1 String and Bytes literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.4.2 String literal concatenation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.4.3 Formatted string literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.4.4 Numeric literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.4.5 Integer literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.4.6 Floating point literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.4.7 Imaginary literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.5 Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.6 Delimiters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3 Data model 17 3.1 Objects, values and types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.2 The standard type hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.3 Special method names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.3.1 Basic customization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.3.2 Customizing attribute access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.3.3 Customizing class creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.3.4 Customizing instance and subclass checks . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.3.5 Emulating generic types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.3.6 Emulating callable objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.3.7 Emulating container types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.3.8 Emulating numeric types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.3.9 With Statement Context Managers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.3.10 Special method lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 i