我正在尝试通过 PyCall.jl 与 python 库交互,其中该库返回一个 python 对象(Julia 中的 PyObject),其中包含我想在 Julia 中修改的属性。例如说我有以下虚拟 python 类,
import numpy as np
class MyNumpy:
def __init__(self,n,m):
self.array = np.zeros((n,m))
self.size = (n,m)
现在在 Julia 中,我使用 PyCall.jl 加载这个 python 类并实例化,例如:
using PyCall
mynumpy = pyimport("MyNumpy.MyNumpy")
pyobject = mynumpy(3,3)
...
> pyobject.array
> 3×3 Array{Float64,2}:
0.0 0.0 0.0
0.0 0.0 0.0
0.0 0.0 0.0
...
pyobject.array[1,1] = 1.0
> pyobject.array
> 3×3 Array{Float64,2}:
0.0 0.0 0.0
0.0 0.0 0.0
0.0 0.0 0.0
最后一行代码执行时没有任何错误,但是在调查后pyobject.array[1,1]
该值没有改变(即,仍然是 0.0)。
例如,如何在 Julia 中完成更改 Pycall.jl PyObject 属性值,我可以使用指针来做到这一点,如果可以的话怎么办?抱歉,如果这很明显,但我没有运气,无法使用 PyCall.jl 文档弄清楚如何做到这一点。提前致谢。
PS 实际的python库不是可以轻易修改的。