Подтвердить что ты не робот

Вывод класса из `object` в python

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


class Base(object):
    pass

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

4b9b3361

Ответ 1

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

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

  • Использование свойств в классических классах работает только частично: get работает нормально, но set делает странные вещи.
  • Множественное наследование ведет себя по-разному в классических классах, чем в классах, полученных из объекта.
  • Также множественное наследование не будет работать, если вы попытаетесь смешивать классические классы с объектами подкласса. Независимо от того, что вы делаете, вы хотите быть последовательным.

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

Ответ 3

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

Смотрите здесь.