import types class Type(type): __class__ = property({}.__getitem__, {}.__setitem__) class Object(metaclass=Type): __slots__ = '__class__' for cls in (type, Type): print(isinstance(Object, cls)) # True. for cls in (list, int, types.CodeType, types.MethodType): try: print(isinstance(Object, cls)) # KeyError: except KeyError as err: print(cls.__name__, err.args[0])