由于可能存在变量别名,因此无法预期的行为

时间:2019-05-14 17:29:56

标签: python numpy immutability

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])

0 个答案:

没有答案