Python изменить атрибут экземпляра методом экземпляра - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь использовать метод экземпляра для изменения одного из атрибутов экземпляра следующим образом:

from torch.optim import SGD
from typing import Dict

class ChangeRateSgd(SGD):
    def __init__(self, params, lr: float, lr_change_instructions: Dict):
        super().__init__(params, lr)
        self.lr_change_instructions = lr_change_instructions

    def change_update_rate(self, input_epoch):
        update_mapping = self.lr_change_instructions
        if input_epoch in update_mapping.keys():
            new_lr = self.lr_change_instructions[input_epoch]
            self.lr = new_lr

Однако моя IDE помечает строку self.lr = new_lr как не идеальную практику кодирования с предупреждением Instance attribute lr defined outside __init__. Каков наилучший способ сделать то, что я пытаюсь сделать с помощью этого метода экземпляра?

1 Ответ

1 голос
/ 27 января 2020

Попробуйте приведенный ниже код, вам нужно определить lr в init методе и получить доступ к любым другим методам.

from torch.optim import SGD
from typing import Dict

class ChangeRateSgd(SGD):
    def __init__(self, params, lr: float, lr_change_instructions: Dict):
        super().__init__(params, lr)
        self.lr =None
        self.lr_change_instructions = lr_change_instructions

    def change_update_rate(self, input_epoch):
        update_mapping = self.lr_change_instructions
        if input_epoch in update_mapping.keys():
            new_lr = self.lr_change_instructions[input_epoch]
            self.lr = new_lr
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...