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