我正在尝试归档一个任务,由于我不太擅长Python元编程,所以这个任务变得有点复杂。
我希望有一个带有函数get_location(name)的模块get_location(name),它返回一个在文件夹位置/文件中定义的类,其中包含传递给函数的名称。类名类似于NameLocation。
所以,我的文件夹结构:
program.py
locations/
__init__.py
first.py
second.pyprogram.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等。
好的,我已经尝试过很多导入和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'>定位模块!为什么?!
发布于 2010-03-20 05:32:22
您确实需要对模块进行__import__;在此之后,从它获得攻击并不困难。
import sys
def get_location(name):
fullpath = 'locations.' + name
package = __import__(fullpath)
module = sys.modules[fullpath]
return getattr(module, name.title() + 'Location')编辑:__import__返回包,所以您还需要一个getattr,请参阅医生们 (并仔细阅读所有章节-“照我说的做,不做我做的”;-)。
发布于 2010-03-20 05:30:32
我想你是在找:
location = __import__('first')https://stackoverflow.com/questions/2482060
复制相似问题