Не понимайте этого «AttributeError: у объекта 'module' нет атрибута», даже если он импортирован прямо перед этим - PullRequest
0 голосов
/ 03 января 2019

Я пытался найти решение здесь, но безуспешно.У меня был кусок кода, который работал нормально, но затем я проверил вещи в другом месте, и он почему-то сломал этот код.Вот пример кода, который вызывает ошибку:

try:
    import a.b.c.d
    CustomClass = a.b.c.d.MyClass
except ImportError:
    CustomClass = OtherClass

class MyClass(CustomClass):
    """Docstring"""

Это помещается в файл d.py.import не дает ошибок и никогда не входит в этот блок except, но когда я пытаюсь присвоить CustomClass, я получаю исключение: 'module' object has no attribute 'd'.

Однако, если я использую следующий код, он работает:

try:
    from a.b.c.d import MyClass
    CustomClass = MyClass
except ImportError:
    CustomClass = OtherClass

class MyClass(CustomClass):
    """Docstring"""

Что может быть причиной того, что первый код выдает ошибку, но работает второй фрагмент?(Примечание: в структуре каталогов есть пустые __init__.py файлы)

Edit: Я только что понял, что второй код работает, потому что он добавляется в блок except ипроходит через.Так почему же первый набор кода не выбрасывает ImportError?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...