Fluent Python

  1. The Python Data Model
  1. An Array of Sequences
  1. Dictionaries and Sets
  1. Text versus Bytes
  1. First-Class Functions
  1. Design Patterns with First-Class Functions
  1. Function Decorators and Closures
  1. Object References, Mutability, and Recycling
  1. A Pythonic Object
  1. Sequence Hacking, Hashing, and Slicing
  1. Interfaces: From Protocols to ABCs
  1. Inheritance: For Good or For Worse
  1. Operator Overloading: Doing It Right
  1. Iterables, Iterators, and Generators
  1. Context Managers and else Blocks
  1. Coroutines
  1. Concurrency with Futures
  1. Concurrency with asyncio
  1. Dynamic Attributes and Properties
  1. Attribute Descriptors
  1. Class Metaprogramming

Special methods

Iterator

Collections

Attribute access

Operator overloading

Function and method invocation

Object creation and destruction

String representation and formatting

Managed contexts (i.e., with blocks)

Miscs

An nice way to create a list:
suits = 'spades diamonds clubs hearts'.split()

doctest makes your code self-testable

Special methods are very powerful beasts -- by just implementing len() and getitem(), your class becomes iterable, support slicing, etc