Как использовать самоанализ в Python 2.7, чтобы найти экземпляры определенного класса в модуле? - PullRequest
0 голосов
/ 03 июля 2011

У меня есть модуль Python, который определяет классы и создает экземпляры этих классов.Я хотел бы написать тест для определения правильного числа.

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

Затем в тестировании я попробовал такие вещи, как:

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

, который не работает, потому что dir(foo), кажется, дает список строк.

Есть ли способ найти экземпляры определенного класса в модуле?

1 Ответ

2 голосов
/ 03 июля 2011

Ты действительно близко.Используйте двойной знак равенства для сравнения, и вам нужно использовать getattr () для извлечения члена модуля по имени:

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

Может быть также полезно прочитать документацию на dir().

...