我有一个模块,其中包含一堆生成 xml 的函数
在其他模块中,我正在构造一个类,并且我想将其中一个函数分配给类变量
问题是,该函数充当类方法,当我从另一个类方法调用它时,它将 self 作为第一个参数传递。
我选择了好的设计方法吗?如何避免将 self 传递给函数? (generate = gen.generate之前的@staticmethod装饰器不起作用)
如果可能的话,我想避免使用生成函数创建一个类
谢谢!
生成器.py
def generate(id, date):
pass
def generate_another():
pass
main.py
import generators as gen
class Client():
generate = gen.generate
def get_result(self, *args, **qwargs):
request = self.generate(id, date)
最佳答案
你必须明白:
@decorator
def some_func():
pass
只是语法糖
def some_func():
pass
some_func = decorator(some_func)
所以在这种情况下,您只需要:
import generators as gen
class Client:
generate = staticmethod(gen.generate)
def get_result(self, *args, **qwargs):
request = self.generate(id, date)
至于这是否是一个好的设计决策,这可能是一个基于选项的问题。就我个人而言,我倾向于避免 staticmethod
。与简单地在 get_result
内调用 gen.generate
相比,此设计有什么优势?
关于python - 在 Python 中将外部函数指定为 staticmethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60498317/