2011-07-03 12 views
0

私はクラスを定義し、そのクラスのいくつかのインスタンスをインスタンス化するPythonモジュールを持っています。正しい番号がインスタンス化されていることをテストしたいと思います。 dir(foo)は、文字列のリストを与えるように思われるので、動作しませんPython 2.7でイントロスペクションを使用して、モジュール内の特定のクラスのインスタンスを見つける方法は?

assert num = len([ x for x in dir(foo) if isinstance(x, foo.Foo)])  

:よう

bar = Foo('abc') 
baz = Foo('def') 
... 
quz = Foo('xyz') 

その後のテストで、私が試してみましたもの。

モジュール内の特定のクラスのインスタンスを見つける方法はありますか?

答えて

2

あなたは本当に近いです。比較のためにサインダブル等号を使用して、あなたが名前で、モジュールのメンバーを取得するためのgetattr()を使用する必要があります。

assert num == len([getattr(foo, x) 
        for x in dir(foo) 
        if isinstance(getattr(foo, x), foo.Foo)]) 

documentationdir()上を読み取るために役に立つかもしれません。

関連する問題