автоматически передавая переменную в python - PullRequest
0 голосов
/ 05 января 2020

Я хочу легко передать переменную в функцию, но я не хочу писать var=var в каждой функции, но я хочу сохранить код в функциях, чтобы я мог перемещаться по нему, есть ли простой способ.

Вот как может выглядеть код:

class main():
    def __init__(self,boolean):
        self.boolean = boolean

    def change(self, change_to):
        def boolchange(self = self, change_to = change_to):
            self.boolean = change_to
        if change_to != self.boolean:
            boolchange()

main(True)
main.boolchange(False)
print(self.boolean)

> False

Теперь я представляю, как может выглядеть код:

class main():
    def __init__(self,boolean):
        self.boolean = boolean

    def change(self, change_to):
        def boolchange():
            self.boolean = change_to
        if change_to != self.boolean:
            boolchange()

main(True)
main.boolchange(False)
print(self.boolean)

> False

1 Ответ

0 голосов
/ 05 января 2020

У вас, похоже, есть неправильные представления о том, как работают Python классы / функции. Вам вообще не нужно self в boolchange, поскольку это закрытие (честно говоря, вам вообще не нужно boolchange), и вам также не нужно каждый раз делать var=var , но только в тех случаях, когда вы хотите указать значения по умолчанию.

class main():
    def __init__(self, boolean):
        self.boolean = boolean

    def change(self, change_to):
        self.boolean = change_to


m = main(True)
m.change(False)
print(m.boolean)
# False

Вы также можете легко реализовать метод toggle, который, похоже, и пытался сделать:

class main():
    def __init__(self, boolean):
        self.boolean = boolean

    def toggle(self):
        self.boolean = not self.boolean


m = main(True)
m.toggle()
print(m.boolean)
# False
m.toggle()
print(m.boolean)
# True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...