【发布时间】:2021-02-22 14:03:34
【问题描述】:
我正在开发一个 Django 项目,我需要从方法中调用一个简单的函数:
def a():
return 1
def b():
return 2
class Report:
def calculate(self):
return self.method_to_call()
class Report1(Parent):
name = 'report 1'
description = 'report 1 desc'
method_to_call = a
class Report2(Parent):
name = 'report 2'
description = 'report 2 desc'
method_to_call = b
这不起作用,因为 python 正在将 self 参数传递给方法。我该如何解决?我应该重新设计这个系统吗?如果是这样,这样做的正确方法是什么?我认为这个解决方案是最可扩展的,因为它使用了声明性语法,并且执行实际计算的代码(在另一个文件中)与定义报告及其属性(名称、描述等)的代码分开(在另一个文件中)
【问题讨论】:
-
很难理解你的情况。 Django 遵循一些特定规则,您的示例可能不一定有效。您可以探索的一个选项是模型管理器
-
如果您希望
Report1和Report2实现自己的calculate方法,您可以这样做。他们可以从Report继承并定义自己的calculate- 你不需要在Report中使用它,它会包含所有常见的东西。 -
@JohnLyon 我在想这个,但如果“计算”中的代码位于另一个文件中,它看起来更干净。
标签: python function methods architecture