Python:如何直接将外部函数设为类静态方法,避免冗余定义
解决方案
直接用staticmethod()构造函数包装你要赋值的外部函数即可,这能达到和@staticmethod装饰器完全一样的效果,同时保留原函数的文档字符串、自动补全,还不会让实例调用时自动传入self参数。
修改后的代码示例
class analysis1(object): from modules.analysis1 import (design, analyse, convert_inputs) get_inputs_from_raw = staticmethod(convert_inputs.convert_from_raw) test_condition = staticmethod(analyse.test_condition) get_analysis = staticmethod(analyse.analyse_single_condition_offdesign) # 其他方法...
原理说明
@staticmethod本质是Python提供的语法糖,背后其实就是调用staticmethod()把目标函数转换成静态方法对象。直接在赋值语句里使用staticmethod()包装外部函数,既省去了写冗余的函数定义和装饰器代码,又能让这些函数在类实例调用时,不会被自动绑定self参数,完全符合你的需求。
这种方式不会修改原有模块的代码,也能让类接口的使用者正常看到原函数的文档字符串和自动补全提示,完美解决你遇到的问题。
内容的提问来源于stack exchange,提问作者Zak
相关产品推荐
相关产品推荐

