Доступ к глобальным переменным из внутренних функций Python

Я пытаюсь обновить одну или две переменные внутри функции calc, а затем распечатать ее в функции rob. Но всякий раз, когда я это делаю, он возвращается к нулю, и это вызывает проблемы.

Используется ключевое слово global, как указано Использование глобальных переменных в функции и не может получить доступ к глобальной переменной изнутри функции в pythonно это похоже не работает

class Solution(object):
    one=0
    two= 0
    def calc(self,root,flag):
        global one
        global two
        if root == None:
            return
        if flag:
            self.one+=root.val
            Solution().calc(root.left,False)
            Solution().calc(root.right, False)
        else :
            self.two+=root.val
            Solution().calc(root.left, True)
            Solution().calc(root.right, True)
        print (str(root.val)+" " + str(self.one) + " " + str(self.two))
    def rob(self, root):
        self.calc(root,True)
        global one
        global two        
        print self.one
        print self.two
        return max(self.one,self.two)

Это в основном всегда возвращает один и два обратно к нулю


person coder    schedule 04.06.2019    source источник
comment
Почему вы используете класс, который не использует никакого внутреннего состояния и пытается использовать глобальные переменные? Это побеждает всю цель класса   -  person juanpa.arrivillaga    schedule 05.06.2019


Ответы (1)


Без определения root и примера вызова кода, который дает неверный ответ, трудно ответить на ваш вопрос. Тем не менее, я думаю, что проблема в том, что вы назначаете root.val атрибуту Solution, не увеличивая глобальные переменные:

# You have:
self.one += root.val
# You want:
one += root.val
person it's-yer-boy-chet    schedule 04.06.2019