我正在将一些代码添加到现有类中以进行测试。通常这个类,eigensystem_CUDA_implementation
依赖于它的父类的一些功能和属性。当这个类独立于程序的其余部分导入时,我想用通常的父类代替 testParent 类。
如果这是测试代码的不好方法,我应该完全不同地做这件事,我愿意接受这个建议。
初始化eigensystem_CUDA_implementation
对象时,错误是:
NameError:在封闭范围内赋值之前引用了自由变量“np”
这可以追溯到该行self.mat = np.matrix(...
还有更多依赖于 NumPy 和 pyCUDA 的eigensystem_CUDA_implementation
内容未显示。一个类可以导入它所依赖的模块吗?由于第一个错误,尚未对此进行测试。
class eigensystem_CUDA_implementation:
def __init__(self, parent = None, max_time = 60, delta = 10**(-32)):
# For testing purposes, when class is utilized independently
if(not parent):
# testing mode
if(not sys.modules.has_key("numpy")):
import numpy as np
import pycuda.driver as cuda
import pycuda.autoinit
from pycuda.compiler import SourceModule
class testParent:
def __init__(self, size = 10):
self.size = size
self.delta = 10**(-32)
self.num_site_types = 8
self.mat = np.matrix(np.random.random((self.size,self.size)).astype(np.float64))
def get_mutation_selection_matrix(self, alpha):
return self.mat
...
一个潜在的问题:not sys.modules.has_key("numpy")
无论是命名为“np”还是其他名称,都会将 NumPy 显示为导入的。其余代码使用“np”,所以我忽略了这一点。
感谢您的任何建议