Skip to content

Instantly share code, notes, and snippets.

@zenwerk
Last active December 31, 2015 22:18
Show Gist options
  • Save zenwerk/8052218 to your computer and use it in GitHub Desktop.
Save zenwerk/8052218 to your computer and use it in GitHub Desktop.
def call_classmethod(*args):
"""
モジュール内のクラスのクラスメソッドを実行しやすくするためのヘルパ関数
args にはメソッドを実行したいclassを指定
"""
current_module = sys.modules[__name__]
factories = {}
results = {}
# このファイルで定義されているFactoryを取得
defined = [i for i in dir(current_module) if i.endswith('Factory')]
_factories = [getattr(current_module, name) for name in defined]
# {Model: ModelFactory} となる辞書作成
factories = {f.FACTORY_FOR: f for f in _factories}
#for factory in _factories:
#factories[factory.FACTORY_FOR] = factory
if args:
# 特定のFactoryのsetupのみ実行
for arg in args:
if arg in factories:
result = factories[arg].setup()
results[arg.__name__] = result
else:
# 全てのFactoryのsetupを実行
for factory in factories.values():
result = factory.setup()
results[factory.FACTORY_FOR.__name__] = result
return results
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment