gpt4 book ai didi

python - 使用 __import__ 获取 'has no attribute' 错误

转载 作者:太空宇宙 更新时间:2023-11-03 15:20:51 25 4
gpt4 key购买 nike

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

class moduleclass(object):
def __init__(self):
self.parameter = 5

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

from modulefolder.modulefile import moduleclass
myobj = moduleclass()
print myobj.parameter

这很好用 - 它按预期打印值 5。

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

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 dir(myobj),然后我得到了:

对于 test1.py:

['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'parameter']

对于test2.py

['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']

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

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

我到处搜索寻找答案,所以这可能是我忽略的直截了当的事情,或者只是没有完全理解。

最佳答案

您没有在 test2.py 中实例化您的类:

myobj = getattr(module, "moduleclass")()

关于python - 使用 __import__ 获取 'has no attribute' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15235145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com