Bound methods for both builtin and pure heap-types have a __self__ attribute from which the method's owner class can be retrieved. But unbound methods attached to heap types that only inherit from object do not have the __objclass__ attribute.
Because methods clearly know which class invokes them when called, there has to be a way to see which class it belongs to, right?
And I hope that I'm right calling classes like str, list, and _collections.deque "builtin" classes and classes defined completely in Python "heap types", correct me if I'm wrong.