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

Class Classname (object), какое слово является "объектом" в Python?

Когда я создаю модуль с его единственным содержимым:

class Classname(randomobject):
    pass

И я пытаюсь запустить .py файл модуля, который интерпретатор говорит, что randomobject не определен.

Но когда я это делаю:

class Classname(object):
    pass

Модуль работает нормально. Поэтому, если object не является ключевым словом, то что это такое?

4b9b3361

Ответ 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 независимый), вы можете использовать первое объявление.