0

Класс Classname(object): что такое 'object' в Python?

10

Я создал модуль, содержимое которого выглядит следующим образом:

class Classname(randomobject):
    pass

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

Однако, если я пишу так:

class Classname(object):
    pass

то модуль работает без проблем. Если object не является зарезервированным словом, тогда что это за сущность?

3 ответ(ов)

0

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

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

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

0

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

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

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

0

В Python 2 object является базовым классом, от которого вы унаследуете, создавая новый стиль класса. В отличие от старого стиля классов, которые не наследуют от object, новые стиль классы предоставляют более мощные механизмы, такие как метаклассы и более унифицированную модель объектов. Чтобы создать новый стиль класс, просто укажите object в качестве родительского класса:

class MyClass(object):
    pass

Таким образом, начиная с Python 2.2, рекомендуется использовать новое стиль классов для большей совместимости и функциональности.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь