'Returns a generator of subclasses of this class and its subclasses.'

@classmethod
def subclasses(cls):

    for subclass in cls.__subclasses__():
        (yield subclass)
        for subclass in subclass.subclasses():
            (yield subclass)
