get all subclasses of a class

Emile van Sebille emile at fenx.com
Sat Jan 19 23:09:54 EST 2002


phil hunt
> (1) I don't know how to get a list of all the subclasses of Foo. Is
this
> possible in Python? I know I could just make a list:
>
>    subclassesOfFoo = (Bar, Bar2, Bar3)
>
> but that seems a bit inelegant.
>

How about:


class Foo: #abstract superclass
    def useThisClass(self, type):
       return 0 # Foo is abstract, so we never create any instances of
it

class Bar(Foo): pass

class Bar2(Foo): pass

class Bar3(Bar2): pass

def testfooness(arg):
    try: return issubclass(arg, Foo) and arg != Foo
    except: return None

subclassesOfFoo = [ sc[0] for sc in vars().items() if
testfooness(sc[1]) ]


--

Emile van Sebille
emile at fenx.com

---------




More information about the Python-list mailing list