object()
object
.Встроенный класс object()
возвращает новый безликий объект. Класс object()
является базой для всех классов. В нем есть методы, общие для всех экземпляров классов Python.
Этот класс не принимает никаких аргументов.
Когда мы объявляем класс:
class MyClass(): pass
то по сути MyClass
наследуется от класса object
.
Kласс object
- это экземпляр типа type
:
>>> isinstance(object, object) # True >>> isinstance(type, object) # True
Обратите внимание, что объект не имеет словаря __dict__
, поэтому нельзя назначить произвольные атрибуты экземпляру класса object()
.
object
.>>> obj = object() >>> obj # <object object at 0x7f5c7fa933e0> >>> dir(obj) # ['__class__', '__delattr__', '__dir__', '__doc__', # '__eq__', '__format__', '__ge__', '__getattribute__', # '__gt__', '__hash__', '__init__', '__init_subclass__', # '__le__', '__lt__', '__ne__', '__new__', '__reduce__', # '__reduce_ex__', '__repr__', '__setattr__', # '__sizeof__', '__str__', '__subclasshook__'] # К слову о наследовании всех классов # от базового класса `object`. >>> class MyClass(): ... pass ... >>> obj = MyClass() >>> obj <__main__.MyClass object at 0x7f5c7b8efcf8> # Экземпляр класса MyClass уже включает все # базовые методы определенные в классе 'object' >>> dir(obj) # ['__class__', '__delattr__', '__dict__', '__dir__', # '__doc__', '__eq__', '__format__', '__ge__', # '__getattribute__', '__gt__', '__hash__', '__init__', # '__init_subclass__', '__le__', '__lt__', '__module__', # '__ne__', '__new__', '__reduce__', '__reduce_ex__', # '__repr__', '__setattr__', '__sizeof__', '__str__', # '__subclasshook__', '__weakref__']
В следующем примере будем использовать экземпляры класса object
в качестве значений для перечислений Color
.
>>> from enum import Enum >>> class Color(Enum): ... RED = object() ... GREEN = object() ... BLUE = object() ... >>> Color.RED # <Color.RED: <object object at 0x7f5c7fa933a0>> >>> Color.RED.value # <object object at 0x7f5c7fa933a0> >>> Color.GREEN # <Color.GREEN: <object object at 0x7f5c7fa933b0>> >>> Color.RED.value # <object object at 0x7f5c7fa933b0> >>> Color.BLUE # <Color.BLUE: <object object at 0x7f5c7fa933c0>>