【发布时间】:2019-03-10 17:01:56
【问题描述】:
我的目标是实现具有 3 种变体的算法。我决定创建 3 个单独的函数,并根据我想要的操作在我的第 4 个函数中调用它们。但是,我意识到,以这种方式执行任务将有 6 个函数,3 个具有初始操作,3 个调用每个操作并执行特定任务(任务相同)。
我决定在 Python 中实现我的解决方案以适应它,我在想使用类和方法是否是个好主意。到目前为止,对我来说每个解决方案都只是函数的定义,但我想改进。
到目前为止,这是我的逻辑(仅显示令我感到困惑的声明):
class InitialAction:
def __init__(self, a, b):
self.a = a
self.b = b
@staticmethod
def f1(a, b):
...
@staticmethod
def f2(a, b):
...
@staticmethod
def f3(a, b):
...
class Implement(self, a, b):
def __init__(self, a, b):
self.a = a
self.b = b
def f4_1(?)
some_how_call_f1??
...
def f4_2(?)
some_how_call_f2??
def f4_3(?)
some_how_call_f3??
而且我不确定是否有比在 {class InitialAction} 的每个方法中使用 (a, b) 更有效的方法,因为它们是相同的。
【问题讨论】:
-
您的问题是什么?
-
f4_1、f4_2和f4_3与f1、f2或f3中的哪一个有任何不同其他 ?如果没有,您只需要一个将函数作为参数的f4。 -
另外,只有静态方法的类不需要
__init__,因为静态方法不使用属性。与 Java 不同,如果不需要,您不必必须使用类;一个只包含定义的解决方案没有任何问题,事实上,在许多情况下,这是努力的目标。 -
Q1:如何在Implement的方法中调用类InitialAction的方法? Q2:我应该在类中的方法定义中每次都使用 (a,b) 吗?
-
回答@chepner,无论使用哪种方法,f4中的动作都是一样的。
标签: python algorithm oop methods quicksort