1

特定の TargetClass からのみ派生するモジュールからクラスを取得する必要があります。

import mymodule as t
for att in dir(t):
   someclass = getattr(t, att)
   if isinstance(someclass, TargetClass):
       print ("Do something with %s" % att)

まあ...これはうまくいかないので、モジュールの属性が呼び出し可能でない場合は、インスタンスを作成し、例外をキャッチする必要があります:

import mymodule as t
for att in dir(t):
   someclass = getattr(t, att)
   try:
       if isinstance(someclass(), TargetClass):
           print ("Do something with %s" % att)
   except:
       pass

では、インスタンスを作成して例外をキャッチすることなく、TargetClass のサブクラスである mymodule からこれらのクラスのみを取得するにはどうすればよいでしょうか?

4

1 に答える 1

4

issubclassの代わりに使用できisinstanceますが、基本的には同じ問題が発生します。最初の引数issubclassはクラスでなければなりません。したがって、それらを組み合わせることができます:

import mymodule as t
for att in dir(t):
   someclass = getattr(t, att)
   if isinstance (someclass, type) and issubclass(someclass, TargetClass):
       print ("Do something with %s" % att)
于 2012-11-01T08:46:59.153 に答える