Мне нужно знать, как настроить __init__.py и import для структурирования проекта python, где я могу использовать полностью определенные имена в пакете.
Пакет будет содержать несколько подпакетов, которые могут содержать конфликтующие имена.Классы, содержащиеся в пакете, будут подклассами друг друга и содержат ссылки друг на друга.Проект будет сгенерирован таким образом, что использование полностью определенных имен сделало бы жизнь намного проще.
Этот пример проекта представляет структуру, к которой я стремлюсь, но содержит только один подпроект, в то время как IDE кажется довольнымсбой при запуске*
MyPackage / SubPackage / FileA.py
from __future__ import absolute_import
import MyPackage
class ClassA(MyPackage.SubPackage.ClassB):
thingA: 'MyPackage.SubPackage.ClassA'
thingB: MyPackage.SubPackage.ClassB
def __init__(self):
self.thingA = None
self.thingB = None
def test(self):
self.thingA = MyPackage.SubPackage.ClassA()
self.thingB = MyPackage.SubPackage.ClassB()
MyPackage / SubPackage / FileB.py
from __future__ import absolute_import
import MyPackage
class ClassB(object):
nextB: 'MyPackage.SubPackage.ClassB'
def __init__(self):
self.nextB= None
def test(self):
self.nextB= MyPackage.SubPackage.ClassB()
test.py
import MyPackage
x = MyPackage.SubPackage.ClassA()
Ошибка
File "C:\temp\Test.py", line 3, in <module>
import GeneratedLx
File "C:\temp\MyPackage\__init__.py", line 1, in <module>
import Bs as Bs
File "C:\temp\MyPackage\SubPackage\__init__.py", line 12, in <module>
from .FileA import ClassA
File "C:\temp\MyPackage\SubPackage\FileA.py", line 5, in <module>
class ClassA(MyPackage.SubPackage.ClassB):
AttributeError: module 'MyPackage' has no attribute 'SubPackage'