Когда вы импортируете модуль, вы получаете только имя модуля, добавленное в ваше локальное пространство имен, а не все содержимое модуля (хотя вы можете получить его, если специально его попросите).
Итакесли вы сделаете import loggingLocal
(часть __init__
не нужна, подробнее об этом ниже), вы получите только имя loggingLocal
в пространстве имен вашего основного модуля.Чтобы получить доступ к классу Logger
внутри него, вам нужно использовать loggingLocal.Logger
.
. Или вы можете указать конкретные имена, которые вы хотите скопировать из импортированного модуля в ваше собственное пространство имен, используя альтернативный синтаксис импорта.from some_module import some_name
.В вашем случае вы, вероятно, захотите from loggingLocal import Logger
.Вы можете присвоить несколько имен, если хотите, или можете указать *
вместо любых имен, в этом случае вы получите либо любые имена, перечисленные в атрибуте __all__
модуля, либо каждую глобальную переменную в другом модуле.имя которого не начинается с подчеркивания.
В вашем коде есть и другие небольшие ошибки.Я упомянул выше, где вы называете часть __init__
имени модуля в вашем выражении import
.Это не нужно.__init__.py
- это имя файла, используемое для модуля, который составляет корневую часть пакета.То есть foo/__init__.py
становится модулем foo
.Если вам не нужен пакет по какой-либо другой причине (например, потому что у вас также есть foo/bar.py
и foo/baz.py
, которые можно импортировать как foo.bar
и foo.baz
), вам, вероятно, не следует использовать эту структуру.Вместо этого просто переименуйте файл localLogging/__init__.py
в localLogging.py
и избавьтесь от подкаталога.
Другая проблема заключается в реализации Logger.Когда вы пытаетесь закрыть файл, который вы создали в llog
, у вас ничего не получается.Вы ссылаетесь только на метод close
, но никогда не вызываете его (вероятно, вы хотели сделать llog_f.close()
).Я бы рекомендовал вместо этого использовать оператор with
для обработки открытия и закрытия файла:
with open(file, "a") as llog_f:
llog_f.write("\n" + typeM + ": " + message)
Этот код автоматически закроет файл в конце блока с отступом, который следует за with
заявление.Он даже закроет файл, если есть исключение, которое приводит к неправильному выходу блока.