创建类实例时出现'AttributeError:模块'usbiss'没有属性Aclass'

时间:2018-12-17 09:54:49

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

尝试编写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实例并使用其方法?

谢谢。

2 个答案:

答案 0 :(得分:1)

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

from package import package

这解决了我的问题。

答案 1 :(得分:0)

确定要正确处理import并且没有引入任何循环依赖项吗?
另外:

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

您的初始化方法缺少self。它们应该是:

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