Вызов self.variable (установленный в __init __ ()) в параметрах определения класса - PullRequest
0 голосов
/ 29 мая 2020

Я хотел бы вызвать переменную класса, установленную в init , из определения класса, чтобы она могла быть значением параметра по умолчанию. Формулировка сложна, но вот пример.

class Sound:
   def __init__(self):
      self.volume = 10

   def set_volume(self, vol=self.volume)
      play_sound_a(vol)

Я предположил, что, поскольку вызывается init , я должен иметь возможность использовать переменные, установленные в init из определений классов. Я мог бы сделать несколько операторов if внутри определения, но было бы проще использовать значения параметров по умолчанию.

Я просто получаю сообщение об ошибке, что self не существует.

1 Ответ

1 голос
/ 29 мая 2020

Так не может быть. Параметр по умолчанию определяется при компиляции метода задолго до создания любого экземпляра. Фактически, все экземпляры этого класса будут использовать одно и то же значение по умолчанию для этого метода. Вместо этого вы можете использовать дозорный, например None, чтобы знать, когда следует использовать том экземпляра. Предполагая, что None не является допустимым значением для этого параметра.

class Sound:
    def __init__(self):
        self.volume = 10

    def set_volume(self, vol=None):
        if vol is None:
            vol = self.volumne
        play_sound_a(vol)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...