python - 在 Python 中将外部函数指定为 staticmethod

标签 python python-3.x

我有一个模块,其中包含一堆生成 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/

相关文章:

python - 如何在不同乘法表之间插入换行符?

python-3.x - 如何在 python 3.4.x 中的 tkinter 的文本小部件中显示渲染的 html 内容

python - 谷歌 Colab 中的 ScispaCy

python - pyodbc 和 MS SQL Server - "No results. Previous SQL was not a query."

python - 谷歌应用引擎(python)混淆类 'object has no attribute'错误

python - 如何检查列表中的所有整数是否连续?

python - 使功能不可覆盖

python - 在 numpy 中创建非等距数组的函数

python - 扩展解包不会在列表中创建单独的项目

python - 如何从没有 None 字段的类创建字典?