我需要在python中使用几个非常相似的绘图函数来共享许多参数,但在某些参数上有所不同,当然它们的作用也略有不同。这是我到目前为止所提出的:
我可以排除第一种选择,但我很难在第二种和第三种之间做出决定。所以我开始疑惑:是否有另一种,也许是面向对象的方式?如果没有,如何在第二和第三选项之间做出决定?
我希望这个问题不是太笼统,我想这不是特定于python的,但是因为我对编程很新(我从未做过OOP)并且现在首先想到这个,我想我将添加python标记。
修改
正如许多人所指出的那样,这个问题很普遍,而且本来是这样的,但据我所知,这使得回答相当困难。所以,这里有一些关于问题的信息让我问:
我需要绘制模拟数据,因此所有绘图问题都有共同的模拟参数(文件位置,物理参数......)。我也希望图形设计相同。但是根据数量,一些图将是1D,一些2D,一些应该包含多个图,有时我需要标准化数据或在绘制之前采用对数。输出格式也可能不同。
我希望这有点帮助。
答案 0 :(得分:1)
这样的事情怎么样?您可以创建一个Base类,该类具有方法foo
,该方法是执行所有类似代码的基本共享方法。然后,对于不同的类,您可以继承Base
并超级感兴趣的方法,并将实现扩展到您需要的任何额外功能。
这是一个如何工作的例子。请注意我在Python 2和Python 3中如何使用super之间提供的不同示例。
class Base:
def foo(self, *args, **kwargs):
print("foo stuff from Base")
return "return something here"
class SomeClass(Base):
def foo(self, *args, **kwargs):
# python 2
#x = super(SomeClass, self).foo(*args, **kwargs)
# python 3
x = super().foo(*args, **kwargs)
print(x)
print("SomeClass extension of foo")
s = SomeClass()
s.foo()
输出:
foo stuff from Base
return something here
SomeClass extension of foo from Base
答案 1 :(得分:0)
需要提供更多信息才能完全理解背景。但是,从一般意义上说,我会混合所有这些。使用帮助函数来实现"共享"部分,也使用条件语句。老实说,很多事情都归结为你更容易做到的事情?