Неожиданное поведение из-за возможного наложения переменных - PullRequest
0 голосов
/ 14 мая 2019

C ++ программист здесь делает Python.Вход U для метода do_something() изменяется с [1.0] на [0.0] при вызове метода clear().Отладка показала, что виновником является строка self.current *= 0.Однако я не могу объяснить причину.Я уверен, что это как-то связано с тем, что переменная U0 используется для инициализации переменной-члена current и используется в качестве первого элемента в списке / аргументе метода do_something.

import numpy as np

class blah:
    def __init__(self,U0):
        self.current  = np.expand_dims(U0,-1)

    def clear(self):
        self.current *= 0 # <- culprit

    def do_something(self,U):
        print(U)
        self.clear()
        print(U)

if __name__ == "__main__":
    U0 = np.ones(1)
    b = blah(U0)
    b.do_something([U0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...