我目前正在用Python编写一个库。我正在尝试使用我在模块中定义的类,但无法在main.py中使用它。在Selector和SeasonSelector内部,我有2个用相同文件名定义的类。我收到以下错误:
模块“选择器”中没有名称“选择器”
main.py
:
import pyf1
testSeasonSelector = pyf1.Selectors.SeasonSelector()
testSelector.loadData()
pyf1/__init__.py
:
from Selectors.Selector import Selector
from Selectors.SeasonSelector import SeasonSelector
目录
├── main.py
└── pyf1
├── Selector.pyc
├── Selectors
│ ├── SeasonSelector.py
│ ├── SeasonSelector.pyc
│ ├── Selector.py
│ ├── Selector.pyc
│ └── __init__.pyc
├── __init__.py
├── __init__.pyc
├── __pycache__
│ └── __init__.cpython-38.pyc
└── data
答案 0 :(得分:0)
您的目录应如下所示
import json
class ParentClass():
def __init__(self):
self.parent_string = "Parent String"
class ChildClass(ParentClass):
def __init__(self):
super().__init__()
self.child_string = "Child String"
child_instance = ChildClass()
json = json.dumps(child_instance.__dict__)
print(json) # {"parent_string": "Parent String", "child_string": "Child String"}
您的目录不是没有 init .py的经过认证的软件包,因此您无法创建导入语句。我还自由地更正了如何命名模块以适合良好的python命名约定\惯例。有了这个,您应该可以从构建的包中顺利导入
答案 1 :(得分:0)
我设法找到了解决方法。
问题是我没有使用正确的语法。添加丢失的__init__()
文件后,我使用了导入语句Import .parent_file from ParentClass
,该语句使我可以按自己的意愿在功能链中传递功能。
然后在Selectors目录中,我可以使用from .selector import __Selector
在SeasonSelector
中使用
此外-我的sys.path
中没有包含PyF1,因此python无法扫描目录。上面语法中包含的内容使我可以做自己想做的事。