• SICP in Python
  • Introduction
  • 1. Chapter 1: Building Abstractions with Functions
    • 1.1. 1.1 Introduction
    • 1.2. 1.2 The Elements of Programming
    • 1.3. 1.3 Defining New Functions
    • 1.4. 1.4 Practical Guidance: The Art of the Function
    • 1.5. 1.5 Control
    • 1.6. 1.6 Higher-Order Functions
  • 2. Chapter 2: Building Abstractions with Objects
    • 2.1. 2.1 Introduction
    • 2.2. 2.2 Data Abstraction
    • 2.3. 2.3 Sequences
    • 2.4. 2.4 Mutable Data
    • 2.5. 2.5 Object-Oriented Programming
    • 2.6. 2.6 Implementing Classes and Objects
    • 2.7. 2.7 Generic Operations
  • 3. Chapter 3: The Structure and Interpretation of Computer Programs
    • 3.1. 3.1 Introduction
    • 3.2. 3.2 Functions and the Processes They Generate
    • 3.3. 3.3 Recursive Data Structures
    • 3.4. 3.4 Exceptions
    • 3.5. 3.5 Interpreters for Languages with Combination
    • 3.6. 3.6 Interpreters for Languages with Abstraction
  • 4. Chapter 4: Distributed and Parallel Computing
    • 4.1. 4.1 Introduction
    • 4.2. 4.2 Distributed Computing
    • 4.3. 4.3 Parallel Computing
  • 5. Chapter 5: Sequences and Coroutines
    • 5.1. 5.1 Introduction
    • 5.2. 5.2 Implicit Sequences
    • 5.3. 5.3 Coroutines
Powered by GitBook

SICP in Python

Chapter 2: Building Abstractions with Objects

Contents

  • 2.1 Introduction
    • 2.1.1 The Object Metaphor
    • 2.1.2 Native Data Types
  • 2.2 Data Abstraction
    • 2.2.1 Example: Arithmetic on Rational Numbers
    • 2.2.2 Tuples
    • 2.2.3 Abstraction Barriers
    • 2.2.4 The Properties of Data
  • 2.3 Sequences
    • 2.3.1 Nested Pairs
    • 2.3.2 Recursive Lists
    • 2.3.3 Tuples II
    • 2.3.4 Sequence Iteration
    • 2.3.5 Sequence Abstraction
    • 2.3.6 Strings
    • 2.3.7 Conventional Interfaces
  • 2.4 Mutable Data
    • 2.4.1 Local State
    • 2.4.2 The Benefits of Non-Local Assignment
    • 2.4.3 The Cost of Non-Local Assignment
    • 2.4.4 Lists
    • 2.4.5 Dictionaries
    • 2.4.6 Example: Propagating Constraints
  • 2.5 Object-Oriented Programming
    • 2.5.1 Objects and Classes
    • 2.5.2 Defining Classes
    • 2.5.3 Message Passing and Dot Expressions
    • 2.5.4 Class Attributes
    • 2.5.5 Inheritance
    • 2.5.6 Using Inheritance
    • 2.5.7 Multiple Inheritance
    • 2.5.8 The Role of Objects
  • 2.6 Implementing Classes and Objects
    • 2.6.1 Instances
    • 2.6.2 Classes
    • 2.6.3 Using Implemented Objects
  • 2.7 Generic Operations
    • 2.7.1 String Conversion
    • 2.7.2 Multiple Representations
    • 2.7.3 Generic Functions