这不是特定语言,但是我将使用Python来解释我的问题。在类中包装函数
我的程序有几个几乎自包含的功能。命令行参数选择其中一个函数,并提供输入文件名。然后执行该功能:
# main.py:
import functions
def main():
filename = sys.argv[1]
function_name = sys.argv[2]
function = getattr(functions, function_name)
result = function(filename)
# do something with result
# function.py contains all the functions:
def function1(filename):
# ...
我有,我应该使用类,而不是功能的感觉,所以我包裹在一个类中的每个函数。但是现在每个类看起来都非常愚蠢:它只是实例化了一次,它所做的只是执行其构造函数,而这正是我的旧函数所做的。然后我可以调用某种方法来检索返回值:
# new version of main.py:
import classes
def main():
filename = sys.argv[1]
cls_name = sys.argv[2]
cls = getattr(classes, cls_name)
calculation = cls(filename)
result = calculation.result()
# do something with result
# classes.py:
import functions
class Class1:
def __init__(self, filename):
self.result = functions.function1(filename)
def result(self):
return self.result
# functions.py is unchanged
这似乎没有比我有功能更好。有没有办法以更有用的方式让我的代码面向对象?
功能 - 独立 - 是一个对象。由于函数对象是一个对象,因此它是面向对象的。你在问什么?如何以某种方式创建函数对象*更多*面向对象?它已经是一个对象。类“callable”的一个实例。你还想要什么? –
我只是想,也许我不应该在我的代码中有一堆全局函数。不知何故,我认为在全球范围内主要有班级会更好。 – max
“在全球范围内主要有班级会更好”?为什么?有什么更好的呢?请定义“更好”。你的目标是什么? –