Редактировать: Кажется, проблема на самом деле не связана с тем, что классы меняются. Кажется, я не могу получить классы для работы с Numba. Запуск (в качестве примера) код here выдает ошибки, связанные с подписями, а также:Ошибки подписи при использовании классов с Numba
Traceback (most recent call last):
File "numba_test.py", line 7, in <module>
class test_base_class_numba(object):
File "numba_test.py", line 8, in test_base_class_numba
@numba.void()
TypeError: 'Signature' object is not callable
У меня есть класс в Python, что изменения второго типа класса в зависимости от некоторых начальных условий. Когда я пытаюсь скомпилировать этот класс с Numba, я получаю загадочную ошибку. Это лучше всего иллюстрируется на примере:
import numba
@numba.jit
class First():
def __init__(self, test):
self.some_inherited_property = 1
if test:
self.__class__ = SecondA
else:
self.__class__ = SecondB
class SecondA(First):
def some_func_a():
print "I am class SecondA"
class SecondB(First):
def some_func_b():
print "I am class SecondB"
thing = First(False)
Когда я запускаю этот код, я получаю следующее сообщение об ошибке:
Traceback (most recent call last):
File "numba_test.py", line 3, in <module>
@numba.jit
File ".../numba/decorators.py", line 155, in jit
targetoptions=options)
File ".../numba/dispatcher.py", line 262, in __init__
pysig = utils.pysignature(py_func)
File ".../funcsigs/__init__.py", line 176, in signature
raise ValueError('callable {0!r} is not supported by signature'.format(obj))
ValueError: callable <class __main__.First at 0x7f37696fb4c8> is not supported by signature
Задание (что я считаю) подпись с чем-то вроде @numba.jit("numba.void(numba.bool)")
в строке 3 не помогает.
А, я вижу. Я не мог найти упоминания об этом нигде в примечаниях к выпуску, документации или в Google. Полагаю, я подожду до следующей версии. Спасибо. –