Я пытаюсь реализовать наследование между двумя классами внутри двух модулей в пакете. Моя текущая структура каталогов выглядит следующим образом:
bin/
main.py
packages/
__init__.py
modA.py
modB.py
tests/
testA.py
testB.py
В основном я вызываю функции из модулей, расположенных в пакетах. В моде есть класс "класс А". В modB есть класс "класс B".
Классу B необходим доступ к переменным класса из класса A, поэтому я хочу, чтобы класс B наследовал от класса A.
Внутри моего __ init __ .py У меня есть
#!/usr/bin/env python
from .modA import class A
from .modB import class B
Внутри modB.py, который у меня есть.
#!/usr/bin/env python
import packages
class classB(packages.classA):
def __init__ (self):
self.name = str()
Однако при попытке запустить код я получаю следующую ошибку.
AttributeError: module 'packages' has no attribute 'classA'
Когда я удаляю наследование и вместо этого просто создаю экземпляр класса A внутри метода init класса B, с кодом не возникает никаких проблем.
#!/usr/bin/env python
import packages
class classB():
def __init__ (self):
self.a = packages.classA()
Вышеприведенное работает нормально, так почему его нельзя распознать при реализации наследственных отношений?
ПРИМЕЧАНИЕ Я также пытался удалить все из файла init .py и реализовать импорт непосредственно в самих файлах modA и modB, но это приводит к другая ошибка импорта.
#!/usr/bin/env python
from .modA import classA
class classB(classA):
def __init__ (self):
self.name = str()
ImportError: cannot import name 'classA' from 'packages.modA' (../pacakages/modA.py)