【发布时间】:2020-09-18 14:27:45
【问题描述】:
我有一些 Python 代码可以工作,但我的方法非常乏味。基本结构是我有一个类,通过多种方法操作数据并返回操作后的数据。代码结构如下:
class ExampleClass:
def __init__(self):
self.__data = 0
def __AllCalculation(self,arg1=1,arg2=2):
self.__Calc1(arg1)
self.__Calc2(arg2)
def __Calc1(self,arg1):
self.__data+arg1
def __Calc2(self,arg2):
self.__data+arg2
def GetResults(self,arg1=1,arg2=2):
self.__AllCalculation(arg1,arg2)
return self.__data
并且用户应该只调用GetResults()。是否有更 Pythonic 的方法来通过函数级联参数?这种方法有效但难以维护,因为单个更改需要多次重写。理想情况下,GetResults() 可以从 __AllCalculations() 继承参数,包括默认值。
【问题讨论】:
-
您是否有多种类型的计算需要在不同的情况下进行?例如。你有
calc1, calc2, calc3,你可能需要调用1和2的getresults1和调用2和3的getresults2 -
单独考虑,可能没有必要将
getresults与__allcalculation分开。 -
@jrmylow 是的,我有可能拥有不同的
getresults,它会跳过一些计算。我知道只需删除getresults并直接使用__AllCalculation即可解决问题,但问题仍然存在;是否可以传播论点? -
如果你足够自律,使用
**kwargs可能会成功 -
@jrmylow 你能提供一个如何传播和跟踪它的例子吗?我无法理解
GetResults(**kwargs)将如何显示__AllCalculations中的默认值并在使用该函数时传达该信息。
标签: python python-3.x class methods