【问题标题】:'AttributeError: module 'usbiss' has no attribute Aclass' when creating class instance'AttributeError:模块'usbiss'在创建类实例时没有属性Aclass'
【发布时间】:2019-05-17 16:08:10
【问题描述】:

试图编写一个 python 包,但我无法在我的一个源文件中创建一个类的实例。

包装布局是:

-packagedir
----README.md
----setup.py
----packagename
--------__init__.py
--------package.py
--------modules
------------file1.py
------------file2.py

init.py 中的包名中我有:

from . modules import file1
from . modules import file2

文件file1.py包含一个类:

class File1():
    def __init__(self):
        self.val = 0
        # Other methods and such

文件file2.py包含一个类:

class File2():
    def __init__(self):
        self.type = 0
        # Other methods and such

在 package.py 我有一个这样的类:

class Aclass(file1.File1, file2.File2):
    def __init__(self):
        # nothing important in here yet

我已经像这样构建并安装了我的包:

python3 setup.py sdist
sudo pip3 install dist/package-0.1.tar.gz

现在我创建一个名为 test.py 的文件并在其中放入以下内容:

import package
iss = package.Aclass()

当我运行测试文件时,我收到以下错误:

AttributeError: module 'usbiss' has no attribute 'Aclass'

我不明白为什么 python 不允许我创建类 Aclass 的实例并认为我正在访问一个属性。我确信我的导入语句或某些东西存在根本性错误,但我不知道它是什么。如何更正此问题,以便创建 Aclass 的实例并使用其方法?

谢谢。

【问题讨论】:

    标签: python python-3.x python-import python-module python-packaging


    【解决方案1】:

    这里的问题是我正在导入包本身,而不是该包中的模块。我将 test.py 中的导入更改为:

    from package import package
    

    这解决了我的问题。

    【讨论】:

    • 感谢您的回答。将来,尽量不要用这样的通用名称来命名你的包。这会导致很多困惑,坦率地说,可以通过适当的深思熟虑的名称来解决
    • 是的,类和模块名称不是最终的,我现在只是作为一个概念证明来制作 python 模块作为学习练习。深思熟虑本可以完全避免这种情况。那里有一个教训,即使您只是在尝试,也要计划更多。
    【解决方案2】:

    您确定您正在正确处理您的import 并且没有引入任何循环依赖项吗?
    还有:

    def __init__(file1.File1, file2.File2):
    def __init__():
    

    您的 init 方法缺少 self。他们应该是:

    def __init__(self, file1.File1, file2.File2):
    def __init__(self):
    

    【讨论】:

    • 对不起,__init__() 方法,所以在其中有 self 不知何故我复制了他们的问题。
    • 您的问题已经解决了吗?如果有,解决办法是什么?
    • 是的,我有,只是这一刻意识到我做错了什么。请参阅我对自己问题的回答。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2021-12-30
    • 2022-10-18
    • 2015-02-19
    • 2018-04-14
    • 2019-02-18
    • 1970-01-01
    相关资源
    最近更新 更多