• Не пойму поведение type с weakref?

    Ivanhoe
    @Ivanhoe Автор вопроса
    Ответ такой.

    Внутри интерпретатора (CPython) каждый Python-объект представлен C-структурой PyObject (файл object.h), в которой одно из полей — ob_type, указатель на структуру _typeobject, котоая определяет «настоящий» тип объекта. type(x) и дескриптор object.__class__ обращаются за типом к этому полю. Но __class__ можно переопределить, что и делает weakref.proxy. При этом type(x) все равно будет продолжать обращаться к ob_type и результат его определения подменить не удастся.
    Ответ написан
    Комментировать