def returnthisclassfrom(specials):
    specialnames = [('__%s__' % s) for s in specials.split()]

def wrapit(cls, method):
    return lambda *a: cls(method(*a))

def dowrap(cls):
    for n in specialnames:
        method = getattr(cls, n)
setattr(cls, n, wrapit(cls, method))
return cls
return dowrap

def int_getslice(self, i, j):
    if i > 1000000 or j > 1000000:
        raise ValueError('BitSize limited to 1 million bits')
lo = min(i, j)
hi = max(i, j)
mask = (1 << hi - lo + 1) - 1
return self >> lo & mask

def int_getitem(self, i):
    if i > 1000000:
        raise ValueError('BitSize limited to 1 million bits')
return self >> i & 1

def int_iter(self):
    raise AttributeError('int object is not iterable')


@returnthisclassfrom(
    'abs add and div floordiv lshift mod mul neg or pow radd rand rdiv rdivmod rfloordiv rlshift rmod rmul ror rpow rrshift rshift rsub rxor rtruediv sub truediv xor trunc'
    )
class BitSliceInt(long):
    __getslice__ = int_getslice
__getitem__ = int_getitem
__iter__ = int_iter
Python: Могу ли я иметь подкласс, возвращающий экземпляры своего собственного типа для операторов, определенных в суперклассе?