Python多应用共用通用函数类,如何高效导入其中的func4?
导入共用类中函数的高效方法
首先先修正你示例代码里的关键问题:类的实例方法必须包含self参数,装饰器func1的缩进也存在错误(return ret_func的层级不对),修正后的common_func.py基础版本如下:
import time class common_funcs(object): def func1(func): def ret_func(*args, **kwargs): # 你的逻辑代码 # statement (....) while True: odc = **** if odc == 100: # statement (....) continue break rsp = func(*args, **kwargs) # 执行原函数并获取返回值 return rsp return ret_func @func1 def nda_cal(self, ar1, ar2): res = xxxx(ar1, ar2) return res def func3(self): # statement 1.... return xyz def func4(self): return abc
针对导入func4的需求,提供三种高效实现方式:
方式1:实例化类后调用(通用场景)
在应用代码中直接导入类,创建实例后调用方法,适合需要调用多个类中方法的场景:
from common_func import common_funcs # 创建类实例(可复用) common_instance = common_funcs() # 调用func4 result = common_instance.func4()
方式2:改为静态方法直接调用(无实例属性依赖时)
如果func4不需要访问类的实例属性或方法,可将其改为静态方法,无需实例化即可调用:
- 先修改
common_func.py中的func4:
class common_funcs(object): # ...其他方法... @staticmethod def func4(): return abc
- 在应用代码中直接导入调用:
# 方式2-1:通过类调用 from common_func import common_funcs result = common_funcs.func4() # 方式2-2:直接导入方法 from common_func.common_funcs import func4 result = func4()
方式3:模块级别导出方法(简化调用路径)
如果需要频繁调用func4,可在common_func.py末尾提前实例化并导出方法:
# 在common_func.py文件最后添加 _common_instance = common_funcs() func4 = _common_instance.func4
之后在应用代码中就能直接导入使用:
from common_func import func4 result = func4()
关键注意点
- 类的实例方法必须携带
self参数,否则调用时会抛出参数不匹配的错误。 - 装饰器
func1要确保在内部正确执行原函数并返回结果,否则被装饰的方法(比如nda_cal)不会产生预期输出。
内容的提问来源于stack exchange,提问作者1ksj8jdnu36flksf
相关产品推荐
相关产品推荐

