我正在寫這樣一個類(簡化)來表示概率分佈。 我想要的只是初始化對象分佈只有它的類型和參數,並且它有一些根據它的類型分配的函數。類定義中的類型錯誤
functions = {'exp':{
'parameters': ['l'],
'pdf': lambda x,p: exp(x/p[0])*p[0],
'cdf': lambda x,p: 1-exp(x/p[0]) },
'uniform':{
'parameters': ['x1','x2'],
'pdf': lambda x,p: 1/(p[1]-p[0]),
'cdf': lambda x,p: (x-p[0])/(p[1]-p[0]) }
}
class Distribution:
def __init__(self,dist_type,**parameters):
self.dist_type = dist_type
self.parameters = parameters
self.p = [ self.parameters[z] for z in functions[dist_type]['parameters'] ]
for key,val in functions[dist_type].items():
if key == 'parameters':
pass
else
setattr(self, key, lambda x:val(x,self.p))
dist = Distribution('exp',l=3.5)
現在,當我跑型(dist.pdf)我得到的是一個lambda函數,但是當我運行的功能,說dist.pdf(4.0)一個類型錯誤:「名單」的對象不是一個調用。
在旁註中,代碼的風格/複雜程度如何?
謝謝,我會檢查你提到的這些技巧。我只想要一個類,其功能取決於一組參數,事情變得更加複雜,因爲我需要的參數取決於'dist_type',這就是爲什麼我使用字典.. – chuse