これを解決する 1 つの方法は、次の代わりに名前付きキーワード引数を使用することです*args
。
def get_percentile(obs,*args):
if len(args) == 0:
args = [25,50,75] # default to quartiles
lstper = []
for arg in args:
lstper.append(np.percentile(obs,arg))
return lstper
class Metric(object):
def __init__(self, values=[], percentiles=[]):
self.max = max(values)
self.median =np.median(values)
self.min = min(values)
self.percentile = get_percentile(values, percentiles)
実際に:
>>> m = Metric(range(30,300,13), [20,40,60,80])
>>> m.max
290
>>> m.percentile
[[82.0, 134.0, 186.0, 238.0]]
または、 を使い続けたい場合args
は、値とパーセンタイルをリスト (またはタプル、ディクテーション、セットなど) で与えることができます。これは必要です。そうしないと、一方がどこで終わり、もう一方がどこで始まるかを判断できません。
class Metric(object):
def __init__(self, *args):
if not len(args) == 2:
raise ValueError("Usage: Metric([values],[percentiles])")
values, percentiles = args
self.max = max(values)
self.median =np.median(values)
self.min = min(values)
self.percentile = get_percentile(values, percentiles)
使い方は上と同じ。