Python中如何从另一个文件调用类中的函数?
解决Python类方法的导入问题
嘿,刚接触Python遇到导入问题太正常了,我来一步步帮你搞定~
首先先提个小细节:你示例里的addelement方法定义少了第一个参数self,类的实例方法必须把self作为第一个参数(用来指代实例本身),不然调用的时候会报错,修正后的代码应该是:
import json class Functionalities: def addelement(self, element): # code goes here print(f"Added element: {element}")
接下来针对你的导入问题,分几种常见情况来说:
情况1:脚本和functions.py在同一目录下
这是最常见的场景,直接用绝对导入就行,不需要用相对导入的.:
# 你的可执行脚本里的代码 from functions import Functionalities # 先实例化类,再调用方法 func_instance = Functionalities() func_instance.addelement("hello")
情况2:想用相对导入(包结构场景)
你之前尝试的from . import functions属于相对导入,这种方式只适用于把代码组织成Python包的情况(也就是目录下有__init__.py文件):
- 先在两个文件所在的目录下创建一个空的
__init__.py文件,这样Python就会把这个目录识别为一个包 - 如果你的脚本是包内部的模块(比如和functions.py同属一个包),可以这样导入:
from .functions import Functionalities
但要注意:如果这个脚本是你直接运行的主程序(比如用python script.py执行),Python会把它当成顶层模块,这时候用相对导入还是会报错,这种情况下更推荐用绝对导入。
情况3:functions.py在子目录中
如果你的项目结构是这样的:
my_project/ main.py # 你的可执行脚本 utils/ functions.py __init__.py
那在main.py里可以这样导入:
from utils.functions import Functionalities
最后再提醒一句:运行脚本时,确保你的工作目录是脚本所在的目录,或者把项目目录添加到Python的环境变量sys.path里(不过同一目录或包结构下一般不需要手动操作)。
内容的提问来源于stack exchange,提问作者Mher Harutyunyan
相关产品推荐
相关产品推荐

