Можно ли сделать определяемый пользователем тип виртуальным подклассом встроенного типа в python? Я бы хотел, чтобы мой класс считался подклассом int
, однако я не хочу наследовать его напрямую следующим образом:
class MyInt(int):
'''Do some stuff kind of like an int, but not exactly'''
pass
С тех пор мой класс становится фактически неизменным, хочу я этого или нет. Например, становится невозможным использование таких методов, как __iadd__
и __isub__
, так как int
не может модифицировать себя. Я мог бы наследовать от numbers.Integral
, но тогда, когда кто-то вызывает isinstance(myIntObj, int)
или issubclass(MyInt, int)
, ответ будет False
. Я понимаю, что классы с метаклассом ABCMeta могут использовать метод register
для регистрации классов в качестве виртуальных базовых классов, которые на самом деле не наследуются от них. Есть ли способ сделать это со встроенными типами? Что-то типа:
registerAsParent(int, MyInt)
Я просмотрел (как в документации по Python, так и в Интернете) и еще не нашел ничего близкого к тому, что я ищу. То, о чем я прошу, просто невозможно?