类内直接动用@jit会报错,应该是因为类内函数的self的参数的属性不在常见类型像int内,按照报错提示加入forceobj=True后便可正常运行
@jit(forceobj=True) def calcu_angle(self, distance_matrix: numpy.ndarray) -> numpy.ndarray: position = numpy.argwhere((distance_matrix < self.settings.radious) & (distance_matrix > 0)) new_angle = numpy.zeros(shape=(1, self.settings.particles)) for i in range(self.settings.particles): ls = position[numpy.where(position[:, 1] == i)] if list(ls): new_angle[0][i] = math.atan2(numpy.mean(numpy.sin(self.Angle[0][ls[:, 0]])), numpy.mean(numpy.cos(self.Angle[0][ls[:, 0]]))) else: new_angle[0][i] = self.Angle[0][i] return new_angle