Я довольно новичок в Python и пытаюсь написать класс-оболочку для некоторых объектов подкачки Quantlib.Проблема в том, что я пытаюсь вызвать объект Qualtlib Schedule, используя атрибуты, которые были либо переданы в конструктор, либо вычислены в конструкторе.Проблема в том, что когда я запускаю код как таковой,
import swapleg as sl
Leg1 = sl.SwapLeg("Fix","AUD",ql.Date(26, 9, 2018),ql.Date(26, 9, 2028),ql.Monthly)
print(Leg1.EffectiveDate)
Leg1.showSchedule()
я получаю следующую ошибку
Traceback (most recent call last):
September 26th, 2018
.......
AttributeError: type object 'SwapLeg' has no attribute 'EffectiveDate'
Код указан в списке - объект Leg1 создается, и EffectiveDate действительно устанавливается,Моя проблема заключается в том, что когда showSchedule вызывает Quantlib и вызывает ql.Schedule, он теряет видимость для EffectiveDate, даже если я смотрю на него с помощью self.EffectiveDate.Я явно что-то здесь упускаю.Любая помощь будет оценена.
import QuantLib as ql
class SwapLeg:
def __init__(self,LegType,CCY,EffectiveDate=None,TerminationDate=None,Tenor=None,Rate=None,Spread=None):
self.LegType=LegType
self.CCY=CCY
self.Tenor=Tenor
if EffectiveDate is None:
self.EffectiveDate = ql.Settings.instance().evaluationDate
else:
self.EffectiveDate =EffectiveDate
......
def _LegSchedule(self):
ls = ql.Schedule( self.EffectiveDate,
self.TerminationDate,
self.Tenor,
self.Calendar,
self.businessDayConvention,
self.businessDayConvention,
self.GenRule,
self.EndOfMonth,
self.FirstDate,
self.NextToLastDate)
return ls
@classmethod
def showSchedule(self):
for i, d in enumerate(self._LegSchedule(self)):
print("{0} {1}".format(i+1,d))