#python #function #class #debugging
Вопрос:
Обычно для отладки функции вне класса я назначаю все ее параметры, затем запускаю и проверяю код функции построчно. (Да, я знаю, что это может быть непрофессионально!). Однако для функции внутри класса она получает ошибку из-за self
Например, какую бы строку я ни запустил внутри этого класса, в ней будет написано:
self.issue_date = issue_date
Traceback (most recent call last):
File "<ipython-input-70-6d3e45750988>", line 1, in <module>
self.issue_date = issue_date
NameError: name 'self' is not defined
Итак, как выполнять код внутри класса построчно? Или как вы, ребята, отлаживаете функцию внутри класса?
Ниже приведен пример моего класса.
class fixed_bond:
def __init__(self, issue_date, settlement_date, first_coupon_date, maturity_date, face_value, df1, df2, coupon_rate, roll, coupon_frequency, day_count_convention):
##################################################################################
#Setting up inital attributes
##################################################################################
self.issue_date = issue_date
self.settlement_date = settlement_date
self.first_coupon_date = first_coupon_date
self.maturity_date = maturity_date
self.face_value = face_value
self.coupon_rate = coupon_rate
if self.roll =='Following':
for i in range(self.number_of_periods):
while cash_flow_dates[i].weekday() < 5:
cash_flow_dates[i]=cash_flow_dates[i] relativedelta(days = 1)
.......
(end of class eg)
Комментарии:
1. Пожалуйста, обновите свой вопрос с полным отслеживанием ошибок.
2. Как вы создаете экземпляр класса?
self
используется для представления экземпляра. Если вы вызовете его вне класса, python не распознает его3. @Sujay Я просто вручную назначаю все параметры. Например, я бегу
issue_date = df[x]
,first_coupon_date = df[y]
. Что мне делать, если я хочу запустить и проверить каждую строку функции класса?4. @quamrana да, я отредактировал
5. Я бы предложил использовать pdb для пошагового просмотра вашего кода.