尝试编写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实例并使用其方法?
谢谢。
答案 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):