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

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

class Classname(randomobject):
    pass

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

Но, когда я делаю:

class Classname(object):
    pass

Модуль работает просто отлично. Так что если object это не ключевое слово, тогда что это?

3 ответа

Решение

object является (глобальной) переменной. По умолчанию он связан со встроенным классом, который является корнем иерархии типов.

(Это приводит к интересному свойству, которое вы можете взять любой встроенный тип, и использовать __bases__ свойство для достижения типа, называемого объектом).

Все встроенное, что не является ключевым словом или оператором, является идентификатором.

Следующие три объявления класса идентичны в Python 3

class Classname(object):
    pass

class Classname():
    pass

class Classname:
    pass

Ну, будут небольшие отличия, но они не принципиально важны, поскольку класс объектов является основой для всех.

Если вы планируете писать независимый от Python код (Python2 и Python3 независимый), вы можете использовать первое объявление.

object является идентификатором, который ссылается на встроенный тип.

В отличие от многих других языков, в Python нет примитивных типов. Все является объектом, включая все типы данных.

Я не уверен, почему вы ожидали наследования от randomobject работать.

object является базовым классом, от которого вы наследуете при создании класса нового стиля в Python 2.

Другие вопросы по тегам