У меня болит голова, пытаясь понять циклические отношения, которые выходят между типом metaclass
, классом object
и типом class
.python metaclass, класс типа и класс объекта
Я пытаюсь понять, как python делает все объектом. Это потому, что все это экземпляр типа метакласса, или это потому, что все является подклассом класса объектов.
Если его из-за того, что он является подклассом класса объектов, означает ли это, если объект класса был назван классом pyobj
. Значит ли это, что все в Python начинается с pyobj?
Я знаю, что объекты, созданные метаклассом, являются типами/классами, которые затем используются для создания другого объекта.
Отсюда:
>>> isinstance(type, object)
True
>>> isinstance(object,type)
True
>>> issubclass(object,type)
False
>>> issubclass(type,object)
True
ли с уверенностью сказать, что питон создает объект класса первого использования типа метакласса (я упрощая метакласс для краткости).
type('object',(),{})
, который предполагает, что объект класса является классом типа класса и не наследует никаких атрибутов другого класса.
Затем он создает тип класса:
type('type', (object,),{})
подразумевающего класс типа класс типа класса, и он наследует атрибуты класса объекта.
Затем создает другие классы путем наследования от объекта класса
type('dict', (object,), {})
type('Animal', (object), {})
, который похож на создание класса животных, как:
class Animal:
pass
Означает ли это метакласс, используемый для создания объекта класса все еще тот, который использовался для создания этого класса Animal или является метаклассовым типом, используемым по умолчанию?
Какой тип используется, это тип метакласса или класс типа, который был создан после создания объекта?
В чем заключается тип класса, созданный с использованием объекта базового класса?
Я также пытался понять, что на самом деле происходит между объектом и классом из всех он ответов выше, и в этой статье http://www.cafepy.com/article/python_types_and_objects/python_types_and_objects.html
Я до сих пор путаюсь. Какова связь между этим двумя классами с точки зрения создания объекта?
Смогу ли я когда-нибудь получить это или это ситуация с курицей и яйцом?
Вы прочитали [3.3.3. Настройка создания класса] (https://docs.python.org/3/reference/datamodel.html#customizing-class-creation) справочника по языку? – wwii