Получение класса от 'объекта' в Python

Таким образом, я просто изучаю Python (я знаю много других языков), и я смущен чем-то. Я думаю, что это происходит из-за отсутствия документации (по крайней мере, что я мог найти). На нескольких веб-сайтах я считал, что необходимо получить классы из object:


class Base(object):
    pass

Но я не вижу то, что это делает или почему или когда необходимо сделать это. Есть ли официальная документация относительно этого, что я отсутствовал? Действительно ли это 3.x функция?

29
задан S.Lott 2 August 2010 в 01:10
поделиться

2 ответа

По большей части не имеет значения, унаследуете вы от объекта или нет, но если вы этого не сделаете, появятся ошибки, ожидающие вас, когда вы забудете, что решили не беспокоиться.

Некоторые тонкие вещи просто не будут работать должным образом, если вы в конечном итоге не наследуете от объекта:

  1. Использование свойств в классических классах работает только частично: get работает нормально, но set делает странные вещи.
  2. Множественное наследование в классических классах ведет себя иначе, чем в классах, производных от объекта.
  3. Также множественное наследование не сработает, если вы попытаетесь смешать классические классы с теми, которые являются объектами подкласса. Что бы вы ни делали, вы должны быть последовательными.

Некоторым людям нравится продолжать использовать классические классы, кроме тех случаев, когда им нужно новое поведение, другие говорят всегда использовать новые классы стиля, чтобы в дальнейшем не выстрелить себе в ногу. Если вы работаете над проектом для одного человека, делайте то, что вам подходит; если это общий проект, согласовываться с другими разработчиками.

24
ответ дан 28 November 2019 в 01:57
поделиться

Начните здесь: http://www.python.org/doc/newstyle/

Также читайте здесь: http://docs.python.org/release/2.5.2/ref/node33.html

Это одно из нескольких промежуточных решений Python 2, которые больше не понадобятся в версии 3.

7
ответ дан 28 November 2019 в 01:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: