Подтвердить что ты не робот

Присвоение атрибуту __class__ экземпляра в Python

В каких обстоятельствах это возможно, а когда невозможно, назначить атрибуту __class__ экземпляра в Python?

Сообщения об ошибках, такие как TypeError: __class__ assignment: only for heap types, на самом деле не делают этого для меня.

4b9b3361

Ответ 1

Вы можете назначить только атрибуту __class__ экземпляра определяемого пользователем класса (т.е. с использованием ключевого слова class), а новое значение также должно быть определяемым пользователем классом. Являются ли классы новыми или старыми, не имеет значения. (Вы не можете их смешивать. Вы не можете превратить экземпляр класса старого стиля в экземпляр класса нового стиля.) См. Также this issue в отладчике ошибок Python, который также жалуется, что сообщение об ошибке несколько сложно понять.

Просто добавьте то, что сказал Рейф в приведенном выше комментарии: Никогда не делайте этого в производстве.