Я пытаюсь изменить переменную класса через его имя, поэтому в основном я вызываю функцию 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)