Лучшее, что я нашел, - это обернуть его в функцию.Мне не особенно нравится это:
@numba.jit
def make_stack_class(typ):
linkednode_spec = OrderedDict()
linkednode_type = deferred_type()
linkednode_spec['data'] = data_type = deferred_type()
linkednode_spec['next'] = optional(linkednode_type)
@jitclass(linkednode_spec)
class LinkedNode(object):
def __init__(self, data):
self.data = data
self.next = None
linkednode_type.define(LinkedNode.class_type.instance_type)
stack_spec = OrderedDict()
stack_spec['head'] = optional(linkednode_type)
stack_spec['size'] = intp
@jitclass(stack_spec)
class Stack(object):
def __init__(self):
self.head = None
self.size = 0
def push(self, data):
new = LinkedNode(data)
new.next = self.head
self.head = new
self.size += 1
def pop(self):
old = self.head
if old is None:
raise ValueError("empty")
else:
self.head = old.next
self.size -= 1
return old.data
data_type.define(typ)
return Stack