Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从另一个Python文件导入类时出现问题_Python_Class_Import_Pyvisa - Fatal编程技术网

从另一个Python文件导入类时出现问题

从另一个Python文件导入类时出现问题,python,class,import,pyvisa,Python,Class,Import,Pyvisa,我对Python非常陌生,我在使用Python的某些方面遇到了困难 我正在编写代码,用pyvisa控制几个仪器。为了简单起见,我这里只展示了一种仪器(Thor Labs功率计)。如果我把我所有的代码放在一个文件中,我就可以让事情顺利进行。以下代码首先搜索可用仪器,并定义仪器ID(ThorID): 然后我定义了powermeter类 最后3条线路打开与仪表的连接,并设置波长(至400 nm)。我可以在一个.py文件中确认所有这些代码都有效 enter pm = powermeter() # Cr

我对Python非常陌生,我在使用Python的某些方面遇到了困难

我正在编写代码,用pyvisa控制几个仪器。为了简单起见,我这里只展示了一种仪器(Thor Labs功率计)。如果我把我所有的代码放在一个文件中,我就可以让事情顺利进行。以下代码首先搜索可用仪器,并定义仪器ID(ThorID):

然后我定义了powermeter类

最后3条线路打开与仪表的连接,并设置波长(至400 nm)。我可以在一个.py文件中确认所有这些代码都有效

enter pm = powermeter()  # Create instance of powermeter
pm.connect()  # Connect to this power meter
pm.set_wavelength(400)  # Set wavelength to 400 nm
我在尝试将类拆分为一个单独的.py文件时遇到了很多麻烦。我想这样做是为了让我的代码更整洁……最终我会添加一个GUI和另一个类,我不想要一个庞大而繁琐的文本

我天真的第一次尝试将此作为我的主代码,上面编写的类保存在PM_class.py中:

但是我在PM_class.py中得到一个错误-NameError:name'ThorID'没有定义

我不明白这一点,因为在我尝试导入类之前,ThorID在行中有明确的定义


任何关于如何实现这一点的建议都是非常受欢迎的

class功率计位于另一个模块中, 在这个字符串中

def __init__(self, wavelength=450, meter_range=200e-3, id=ThorID):
您尝试使用var
ThorID
初始化它,但该类本身是封装的,无法从当前模块读取该var。尝试在
PM_class.py
中定义
ThorID
变量或使用

def __init__(self, wavelength=450, meter_range=200e-3, id=None):
并在初始化类时传递id

pmeter=powermeter(id=ThorID)

谢谢我尝试了后一种方法,效果很好。我还必须修复“rm”的后续错误,将类定义的一部分更改为:def connect(self,rm):“”,然后使用pm.connect(rm)
def __init__(self, wavelength=450, meter_range=200e-3, id=ThorID):
def __init__(self, wavelength=450, meter_range=200e-3, id=None):
pmeter=powermeter(id=ThorID)