ребята У меня проблема с моим кодом на Python.Python, параметры массива в классе не имеют правильного значения, когда я вызываю класс
class BasketOption:
def __init__(self,name,markets,typeO,numbersU,numbersA,maturity,strike):
self.name = name
self.markets = markets
self.typeO=typeO
self.numbersU=numbersU
self.numbersA=numbersA
self.maturity = maturity
self.strike = strike
self.cache = DateCache()
def getnumbersA(self,numbersU):
self.numbersA=np.empty(self.numbersU)
return self.numbersA
def getdates(self):
return [self.maturity]
def getmarkets(self):
return [self.markets]
def getweight(self):
compt=0
totalweight=0
weight=np.empty(self.numbersU,dtype=float)
for i in range(self.numbersU):
totalweight+=self.getnumbersA(self.numbersU)[i]
total=np.array([totalweight]*self.numbersU)
weight=self.getnumbersA(self.numbersU)/total
return weight
def getsum(self,date):
prices=0
for i in range(self.numbersU):
prices+= self.markets.getspot(date,i)*self.getweight()[i]
return prices
@timecached
def getcf(self,date):
if date == self.maturity:
#FIXME: l'option peut aussi porter sur un forward, introduire
# plutôt la notion de produit.
if self.typeO=="call":
return np.maximum(self.getsum(date) - self.strike, 0.)
else:
return 0
Это мой класс, и я называю это так:
BasketOption(name="basket", typeO="call",numbersU=2, numbersA=np.array([[2., 2.]]), maturity=1.,strike=110)
У меня нет хороших результатов, так что я искал на отладку, и я увидел, что numbersA
не принимают значения 2.
и 2.
в массиве, когда я звоню, он принимает это:
ndarray: [ 3.68777431e+180 1.04146313e-152]
Я не знаю, почему это принять эти ценности. Благодарю.
Arent у вас отсутствует аргумент 'markets', который не имеет значения по умолчанию? –
Нет, это не так. Я уверен, что я просто не показывал вам эту часть кода. –
Попробуйте поставить простую печать() после инициализации –