Есть ли лучший способ запоминания ранее заданных необязательных аргументов метода в Python? - PullRequest
0 голосов
/ 06 декабря 2018

Так что я возился с классами, пытаясь разобраться в них, и натолкнулся на необходимость помнить, чтобы мои методы запомнили ранее приведенные аргументы.Это потому, что я хотел вызвать метод без передачи новых аргументов, а вместо этого просто использовать те же аргументы, что и раньше.Так как я запускал это откуда-то еще, я подумал, что было бы легче попытаться заставить класс запомнить переменные и использовать память, если не было передано никаких новых аргументов.

В итоге я получил следующее:

class someclass:
    def test(self, x=None):
        if x:
            self.x = "yes " + str(x)
        try:
            print(self.x)
        except AttributeError:
            pass

a = someclass()

a.test()
a.test()
a.test(5)
a.test()
a.test()

Итак, первые два раза это называется, self.x еще не определено, поэтому оно проходит.В любое время после этого он запоминает число 5, которое было дано только один раз.

Так что мой вопрос в основном заключается в том, есть ли более простой / лучший способ написания этого блока, но также и в том случае, если это как-то плохая практика, которая вызовет у меняпроблемы позже.

1 Ответ

0 голосов
/ 06 декабря 2018

Вы также можете сделать это, используя атрибуты класса.Здесь мы использовали атрибут класса x, чтобы сначала сохранить наше значение по умолчанию, а затем сохранить ранее введенное значение:

Код:

class someclass:
    x = None
    def test(self, x=x):
        if x:
            someclass.x = "yes " + str(x)
        if someclass.x:
            print(someclass.x)

a = someclass()

a.test()
a.test()
a.test(5)
a.test()
a.test()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...