Почему при объявлении класса в Python 2 используется унаследование его от object?
Ситуация достаточно стандартная. Наверное, многие замечали в Django примерно следующую конструкцию:
Мы видим класс Meta, но после него нет наследования от object.
Объясняется все очень просто.
До Python 2.2 классы объявлялись так:
Но в новой версии появились фичи, такие как дескрипторы, свойства и многое другое.
Таким образом, в Python 2.2, чтобы использовать для классов новинки, требовалось унаследоваться от object:
object - это встроенный класс и объект. Экземпляры типа или класса object - это объекты. Более подробно.
В Python 3 старый стиль объявления классов был убран, так что наследоваться от object надо только в Python 2.