我试图通过它的名字来修改一个类的变量,所以基本上我所做的就是调用setattr函数。我的问题是当我试图用numba njit装饰器做到这一点时,它不再起作用了。
那么有没有办法在里面做同样的事情numba?
import numba as nb
class A():
def __init__(self):
self.a =0.
@nb.njit()
def test(A,s):
setattr(A,s,1)
A = A()
s = 'a'
print(A.a)
test(A,s)
print(A.a)
更新
是否可以test在@nb.njit装饰器之外的函数中调用函数。在下面的例子中,var_update(A,s,1)函数无法编译?
import numba as nb
class A():
def __init__(self):
self.a =0.
def set_a(self,a):
self.a=a
@nb.njit()
def test(A,s):
var_update(A,s,1) # this function could not be compiled?
def var_update(Obj, s , val):
setattr(Obj,s,val)
CA = A()
s = 'a'
print(CA.a)
test(CA,s)
print(CA.a)
红糖糍粑
相关分类