【发布时间】:2014-09-28 17:38:34
【问题描述】:
是否可以使用户定义类型成为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 文档中还是在网上),但还没有找到任何与我正在寻找的东西相近的东西。我的要求是完全不可能的吗?
【问题讨论】:
标签: python inheritance subclass abc