Python
では、クラスがobject
を継承する理由は、主に旧スタイルクラスと新スタイルクラスの違いにあります。Python
2では、object
を継承しないクラスは「旧スタイルクラス」として扱われ、機能が制限されます。新スタイルクラスを使うことで、super()
の使用やデスクリプタ(staticmethod
、classmethod
、property
など)のサポート、__slots__
によるメモリ効率化、メソッド解決順序(MRO)の制御など、さまざまな利点が得られます。
Python
3では、すべてのクラスがデフォルトでobject
を継承するため、class MyClass:
という定義だけで新スタイルクラスを作成できます。このため、object
を明示的に継承する必要はありませんが、互換性を考慮して明示的に記述することも可能です。
例えば、Python
2と3の両方で動作するコードを書く場合、object
を明示的に継承することで、コードの互換性が保たれます。