オブジェクト指向プログラミング
Pythonでは扱えるデータの全てがオブジェクトである。単純な数値といった基本的なデータ型をはじめ、組み込みのコンテナ型、組み込み関数など、これらは全て統一的な継承関係をもつオブジェクトであり「型」をもっている。これらの組み込み型とユーザ定義型は区別されず、組み込み型を継承したクラスを定義できる。上の「データ型」の項で述べたように Pythonは静的な型チェックを持たないため、Javaのようなインターフェイスという言語上の仕組みは必要とされない。クラスの
継承 (
inheritance) メカニズムでは、複数の基底クラスを持つことができ(多重継承)、導出されたクラスでは基底クラスの任意のメソッドをオーバライド(
override、上書き)することが可能である。また、オブジェクトには任意のデータを入れることができる。これらのメソッドやデータは、基本的に、すべて
public
であり、
virtual
(仮想)である。ただし、先頭にアンダースコアをもつメンバを
private
とすることができる。これは単なるマナーであるが、アンダースコアを2つもつ場合は、クラスの外部からメンバの名前を隠された状態(難号化(
mangle))とすることで
カプセル化を実現できる。また、ほとんどの組み込み演算子(算術演算子(
arithmetic operator)や添字表記)はクラスインスタンスで使うために再定義することが可能となっている。