Python メタプログラミングが苦手なため、少し複雑なタスクをアーカイブしようとしています。
関数に渡された名前のファイル内のフォルダーの場所/で定義されたクラスを返すlocations
functionを持つモジュールが必要です。get_location(name)
クラスの名前は NameLocation のようなものです。
だから、私のフォルダ構造:
program.py
locations/
__init__.py
first.py
second.py
program.py は次のようになります。
from locations import get_location
location = get_location('first')
場所は、次のように first.py smth で定義されたクラスです。
from locations import Location # base class for all locations, defined in __init__ (?)
class FirstLocation(Location):
pass
等
さて、私は多くのimportステートメントとgetattributeステートメントを試しましたが、今は飽きて降伏しました。そのような行動をアーカイブする方法は?
理由はわかりませんが、このコード
def get_location(name):
module = __import__(__name__ + '.' + name)
#return getattr(module, titlecase(name) + 'Location')
return module
戻り値
>>> locations.get_location( 'first')
<module 'locations' from 'locations/__init__.py'>
ロケーションモジュール!どうして?!