首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用__import__获取“没有属性”时出错

使用__import__获取“没有属性”时出错
EN

Stack Overflow用户
提问于 2013-03-06 06:11:35
回答 1查看 861关注 0票数 3

我遇到了一个奇怪的问题,在我的搜索中没有发现任何类似的问题;这可能意味着这个问题是显而易见的,而我只是没有看到它。我在一个名为modulefolder的文件夹中有一个名为modulefile.py的类模块。下面是modulefile.py:

代码语言:javascript
复制
class moduleclass(object):
    def __init__(self):
        self.parameter = 5

现在,在我的test1.py文件中,我这样做:

代码语言:javascript
复制
from modulefolder.modulefile import moduleclass
myobj = moduleclass()
print myobj.parameter

这非常有效--它会像预期的那样打印出值5。

现在,我的问题是,在我的应用程序中,直到运行时我才知道modulefile文件夹、modulefile文件和modulefile类。它们将以字符串形式提供给我。所以我试了一下,这是test2.py:

代码语言:javascript
复制
module = __import__("modulefolder.modulefile", fromlist=["moduleclass"])
myobj = getattr(module, "moduleclass")
print myobj.parameter

如果这不起作用,我会得到一个错误AttributeError: type object 'moduleclass' has no attribute 'parameter'

所以,这就是让我困惑的地方。在test1.py和test2.py中,我将print语句改为print dir(myobj),并得到如下结果:

对于test1.py:

代码语言:javascript
复制
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'parameter']

对于test2.py

代码语言:javascript
复制
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']

因此,很明显,第二个导入方法缺少我的“参数”属性。问题是,我不知道为什么。

为什么这种动态导入方法会影响实例化对象的工作方式?我能做些什么来修复它呢?

我到处寻找答案,所以这可能是我忽略的,或者只是不完全理解的简单的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-06 06:14:03

您不需要在test2.py中实例化您的类

代码语言:javascript
复制
myobj = getattr(module, "moduleclass")()
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15235145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档