Class Classname (object), какое слово является "объектом" в Python?
Когда я создаю модуль с его единственным содержимым:
class Classname(randomobject):
pass
И я пытаюсь запустить .py файл модуля, который интерпретатор говорит, что randomobject
не определен.
Но когда я это делаю:
class Classname(object):
pass
Модуль работает нормально. Поэтому, если object
не является ключевым словом, то что это такое?
Ответы
Ответ 1
object
является (глобальной) переменной. По умолчанию он привязан к встроенному классу, который является корнем иерархии типов.
(Это приводит к интересному свойству, что вы можете использовать любой встроенный тип и использовать свойство __bases__
для доступа к типу, называемому объектом).
Все встроенное, которое не является ключевым словом или оператором, является идентификатором.
Ответ 2
object
- это идентификатор, который ссылается на встроенный тип.
В отличие от многих других языков, в Python нет примитивных типов. Все это объект, включая все типы данных.
Я не уверен, почему вы ожидали наследования от randomobject
для работы.
Ответ 3
object
- базовый класс, из которого вы наследуете при создании класса нового стиля в Python 2.
Ответ 4
Следующие три объявления класса идентичны в Python 3
class Classname(object):
pass
class Classname():
pass
class Classname:
pass
Ну, будут небольшие отличия, но они не принципиально важны, поскольку класс объектов является основой для всех.
Если вы планируете писать независимый от Python код (Python2 и Python3 независимый), вы можете использовать первое объявление.