Запустите код Python построчно для отладки функции внутри класса

#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 для пошагового просмотра вашего кода.