R. David Murray added the comment:
Thanks for the suggestion, but I don't think so.
Python imports are not lazy. They are ordered. Python is an *interpreted*
language, so __subclasses__ is only going to hold those subclasses whose class
definitions have been executed. This is fundamental to
New submission from Thomas Guettler:
AFAIK cls.__subclasses__() only returns the classes which the interpreter has
already loaded.
This means there can be more subclasses in modules where not imported by the
current interpreter up to now.
https://docs.python.org/3.7/library/stdtypes.html?high