Почему «объект» передается как базовый класс в python? - PullRequest
1 голос
/ 01 апреля 2020

По сути, чем отличается определение класса с помощью базового класса «объект», по сравнению с отсутствием базового класса. Я видел, как классы определены с базовым классом "объект" много раз.

class MyClass(object):
    def __init__(self. *params):
        self.params = params

Или

class MyClass:
    def __init__(self. *params):
        self.params = params

1 Ответ

0 голосов
/ 01 апреля 2020

В Python 3.x, который в настоящее время является языком де-факто, вообще нет никаких отличий: либо иметь явное наследование от объекта, либо оставить базы пустыми - это абсолютно то же самое.

Для Python 2, однако это другой вопрос - после того, как язык развил объектно-ориентированные синтаксисы с так называемыми «классами c классами», ряд улучшенных функций в механизмах наследования, выделения памяти, инициализации объекта, атрибута задумывался о поиске, а затем был введен object обратно в Python 2.2 в качестве основы для того, что в жизненном цикле Python 2.x было названо «новыми стилями».

Итак, если вы видите, что некоторый код, который должен выполняться в Python 2, не наследуя от объекта, почти всегда является ошибкой, что может привести к тому, что во время выполнения будет сложно найти неправильное поведение (например, type(instance) не будет работать должным образом) , вы не можете использовать дескрипторы, такие как "свойства" и т. д.).

Как указано выше, однако, все классы в Python 3.0 и выше "новые классы стиля". Явное наследование от объекта интересно, когда можно было бы написать код, который должен корректно работать как в Python 2, так и Python 3 - сегодня мало проектов сосредоточены на поддержании совместимости Python 2, и поэтому каждый будет видеть все меньше и меньше " объект "как явное основание в новом коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...