[英]Aliasing in __init__.py
我正在使用 python 3.10.7 并面临奇怪的问题。请让我知道这是否是访问事物的正确方法
情况1:
我的文件结构如下:
calculator
calcfunctions
addition.py (def sum(a,b) in this file)
subtraction.py
__init__.py
main.py
__init__.py
中的代码如下:
list_languages = ["Rust","Java"]
import calcfunctions.addition
当我尝试在控制台中导入模块时,它工作得很好,如下所示:
PS E:\practice\calculator> python
Python 3.10.7 (tags/v3.10.7:6cc6b13, Sep 5 2022, 14:08:36) [MSC v.1933 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import calcfunctions
>>> calcfunctions.addition.sum(2,3)
5
案例二:
如果我修改__init__.py
中的代码如下
list_languages = ["Rust","Java"]
import calcfunctions.addition as summation
现在我尝试在repl中导入,它给出的错误如下:
PS E:\practice\calculator> python
Python 3.10.7 (tags/v3.10.7:6cc6b13, Sep 5 2022, 14:08:36) [MSC v.1933 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import calcfunctions
>>> calcfunctions.list_languages
['Rust', 'Java']
>>> calcfunctions.summation(2,3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'module' object is not callable
>>> summation(2,3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'summation' is not defined
>>> summation.sum(2,3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'summation' is not defined
我在这里做错了什么?
如果您希望calcfunction
summation
calcfunction.addition
的sum
方法的引用,则希望您的导入from calcfunction.addition import sum as summation
。 由于您在 package 中执行此操作,因此您也可以使用相对导入,而不是明确命名calcfunction
: from.addition import sum as summation
。
如果您希望主模块(您以交互方式运行)定义summation
,则需要执行from calcfunction import summation
调用,而不仅仅是导入calcfunction
本身。
需要通过以下方式访问:
>>> calcfunctions.summation.sum(2,3)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.