5

いくつかのクラスを定義する python モジュールがあります。

class A(object):
    def __call__(self):
        print "ran a"

class B(object):
    def __call__(self):
        print "ran b"

class C(object):
    def __call__(self):
        print "ran c"

モジュール内から、すべてのクラスを提供する属性を追加するにはどうすればよいでしょうか?

dir() はモジュール内のすべての名前を教えてくれますが、モジュール内からクラスの名前からクラス自体に移動する方法がわかりません。

モジュールの外側からは、単純に を使用できますが、モジュール自体の中にモジュールのようなものはgetattr(mod, 'A')ありません。self

これはかなり明白に思えます。誰かが私に欠けているものを教えてもらえますか?

4

3 に答える 3

9
import sys
getattr(sys.modules[__name__], 'A')
于 2008-11-28T22:16:19.110 に答える
5

これを 1 つの for ステートメントに分割できますが、コードの重複が煩雑になります。

import sys
import types
this_module = sys.modules[__name__]
[x for x in
    [getattr(this_module, x) for x in dir(this_module)]
    if type(x) == types.ClassType]
于 2008-11-28T22:20:10.147 に答える
2
classes = [x for x in globals().values() if isinstance(x, type)]
于 2008-11-28T23:17:31.263 に答える