def itersubclasses(cls, _seen=None):
if not isinstance(cls, type):
raise TypeError('itersubclasses must be called with '
'new-style classes, not %.100r' % cls)
if _seen is None: _seen = set()
try:
subs = cls.__subclasses__()
except TypeError: # fails only when cls is type
subs = cls.__subclasses__(cls)
for sub in subs:
isAbstract = inspect.isabstract(sub)
#print str(sub) + "is abstract: " + str(isAbstract)
if sub not in _seen:
_seen.add(sub)
if not isAbstract:
print "Loading Handler: " + str(sub)
yield sub
for sub in itersubclasses(sub, _seen):
yield sub
#assistanHandlerClasses = vars()['AssistantHandler'].__subclasses__()
评论列表
文章目录