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.