Terry Reedy <tjreedy <at> udel.edu> writes: > > On 2/22/2013 4:35 AM, Wolfgang Maier wrote: > > Dear all, > > I am wondering what the rules are that determine whether a built-in type is > > subclassable or not. > > As examples, why can you base your classes on int or set, > > but not on bool or range? > > Also: can you use introspection to find out whether a type is valid as a > > base type? > > You are not the first to ask about this. I opened a doc issue. > http://bugs.python.org/issue17279 >
Thanks, Terry, using the __flags__ & (1 << 10) trick from Daniel, I did something similar to what you just added to the doc issue. The complete list of types classes that *cannot* be subclassed is: <class 'builtin_function_or_method'> <class 'code'> <class 'frame'> <class 'function'> <class 'generator'> <class 'getset_descriptor'> <class 'function'> <class 'mappingproxy'> <class 'member_descriptor'> <class 'method'> <class 'traceback'> <class 'range'> <class 'memoryview'> <class 'slice'> <class 'bool'> of these range, memoryview, slice and bool are the only ones in builtins. Just thought it might be interesting. -- http://mail.python.org/mailman/listinfo/python-list