我正在编写一个类,它多次使用几个非成员函数(所有返回列表)的结果。
我想知道处理这个问题的标准方法是什么——我最初的想法是写一些类似的东西:
class Y_and_Z_matrices(object):
def __init__(self, roots_p, roots):
self.deltas = deltas(roots)
self.deltas_p = deltas(roots_p)
self.thetas = thetas(roots)
self.thetas_p = thetas_p(roots_p)
self.epsilons = epsilons(roots)
self.epsilons_p = epsilons(roots_p)
def _func_a (self, roots_p, roots, param):
#refers to the member variables
def _func_b (self, roots_p, roots, param):
#refers to the member variables
def Ymatrix(self, roots_p, roots):
#refers to the member variables
def Zmatrix(self, roots_p, roots):
#refers to member variables
我认为只调用一次而不是多次调用函数会更快,但是由于deltas
,thetas
和epsilons
函数都很小,我不确定它是否重要。
现在我想知道在这种情况下python是如何工作的,这是否比deltas
在我将使用它们的每个函数中调用函数更好?保存列表roots
并引用它们而不是将它们传递给许多函数会更好吗?
即重写上述内容的(缺点)优点是什么:
class Y_and_Z_matrices(object):
def __init__ (self, roots_p, roots, param):
self.roots_p = roots_p
self.roots = roots
self.param = param
def _func_a (self):
#uses 'roots_p', 'roots', and 'param' member variables
#passes 'roots' and 'roots_p' to 'deltas', 'epsilons' and 'thetas' when needed
def _func_b (self):
#uses 'roots_p', 'roots', and 'param' member variables
#passes 'roots' and 'roots_p' to 'deltas', 'epsilons' and 'thetas' when needed
def Ymatrix(self):
#uses 'roots_p', and 'roots' member variables
#passes 'roots' and 'roots_p' to 'deltas', 'epsilons' and 'thetas' when needed
def Zmatrix(self):
#uses 'roots_p', and 'roots' member variables
#passes 'roots' and 'roots_p' to 'deltas', 'epsilons' and 'thetas' when needed
我想以第二种方式编写类,但唯一的原因是因为我喜欢具有尽可能小的参数列表的函数的外观,而且我不喜欢我的__init__
函数看起来如此笨拙。
总结一下这个问题:-
将函数的返回值保存为成员变量而不是在多个成员函数中调用函数,客观上是更好还是更差?
保存参数(在整个类中都是相同的)或使用所需参数调用函数客观上是更好还是更差?
或者
只是在某个地方(如果有,在哪里)有一个权衡吗?