Использование псевдоним в __init__.py по -прежнему раскрывает исходное имя подмодуля в пространстве имен пакетов в PythoPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Использование псевдоним в __init__.py по -прежнему раскрывает исходное имя подмодуля в пространстве имен пакетов в Pytho

Сообщение Anonymous »

Я заметил неожиданное поведение при импорте подмодуля с псевдонимом в файле моего пакета __init __. py . Короче говоря, использование псевдонима в __init __. Py по -прежнему выявляет исходное имя подмодуля в пространстве имен пакетов.
  • файлы < /li>
    < /ul>

    Код: Выделить всё

    .
    ├── package
    │   ├── __init__.py
    │   └── submodule.py
    └── test.py
    < /code>
    
    __init__.py

Код: Выделить всё

from . import submodule as sm

print(dir())
< /code>
[list]
[*]test.py
[/list]

Код: Выделить всё

import package

print(package.submodule)
< /code>
[list]
[*]run test.py
получит
[/list]

Код: Выделить всё

['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'sm', 'submodule']

< /code>
[list]
[*]python version: 3.12.7
[/list]
What happens
You can see the submodule is exposed even when I import it as an alias in __init__.py
.
чего я ожидаю
Я ожидаю, что тест. /code> Потому что __init __. py не импортировал его напрямую. И я не уверен, является ли это ошибкой в ​​Python.
Точка в этом вопросе заключается в том, что For x import y как z не создает две переменные y < /code> и z в нормальной ситуации. Например, если я использую из импорта пакета подмодуль в качестве sm in test.py , а затем print (dir (dir ()) , результат показывает, что у него нет доступа к подмодуле . Однако в этом вопросе это на самом деле создает две переменные подмопуль и sm .
Я пытаюсь спросить CHATGPT или другие LLMS и искать DOC с python.org Полем Однако я не получил четкого ответа. Это ошибка или обычный дизайн?

Подробнее здесь: https://stackoverflow.com/questions/794 ... ckage-name
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»