Извлечение класса из `object` в python - PullRequest
26 голосов
/ 02 августа 2010

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


class Base(object):
    pass

Но я не понимаю, что это делает, почему, или когда вы должны это делать.Есть ли официальная документация по этому, что я пропустил?Это функция 3.x?

Ответы [ 3 ]

23 голосов
/ 02 августа 2010

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

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

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

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

7 голосов
/ 02 августа 2010

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

Также прочитайте это: http://docs.python.org/release/2.5.2/ref/node33.html

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

4 голосов
/ 10 мая 2017

В Python 3 классы неявно расширяют объект, независимо от того, говорите вы сами или нет.

См. здесь .

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