Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.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_Handler - Fatal编程技术网

Python 我是否在这里复制了类实例或类处理程序?

Python 我是否在这里复制了类实例或类处理程序?,python,class,handler,Python,Class,Handler,我想按类属性对类处理程序进行排序。 首先,我生成一个类处理程序列表,在while循环中处理以下5行 #此处输入序列号并检查有效性 如果snr_ok==真: 设备列表。追加(设备(信噪比、属性列表)) logging.info(“添加序列号”+snr+”和属性“+prop_列表”) 其他: 通过 “”“按属性(气体类型)对的所有实例进行分组” 校准气体={'He':[],'O2':[],'N':[],'Ar':[]] 对于列表中的气体(校准气体): 对于设备列表中的开发人员: 如果dev.get_

我想按类属性对类处理程序进行排序。 首先,我生成一个类处理程序列表,在while循环中处理以下5行

#此处输入序列号并检查有效性
如果snr_ok==真:
设备列表。追加(设备(信噪比、属性列表))
logging.info(“添加序列号”+snr+”和属性“+prop_列表”)
其他:
通过
“”“按属性(气体类型)对的所有实例进行分组”
校准气体={'He':[],'O2':[],'N':[],'Ar':[]]
对于列表中的气体(校准气体):
对于设备列表中的开发人员:
如果dev.get_gaslist()中的gas:#get_gaslist返回包含一些gas的字符串列表
校准气体[气体].*附加(开发)**
打印(校准气体)
通过按气体类型对
dev
元素进行分组,我将它们添加到校准气体目录中。 我的问题是: dev是类实例的副本还是类处理程序的副本?
或者用C语言说:dev是指向类实例的指针还是类本身的副本。Python没有按值调用/按引用调用的区别,而是使用按对象标识调用的范例。除非您显式复制某些内容(例如使用切片、
obj.copy()
copy.deepcopy
),否则不会发生这种情况

添加到
校准气体[气体]
中的对象与
设备列表中的对象相同

顺便说一下,不必对列表中的气体(校准气体)执行
您只需对校准气体中的气体执行
。更好的是,您可以:

for gas, devices in calibration_gases.items():
    for dev in device_list:
        if gas in dev.get_gaslist():
            devices.append(dev)

你应该读以下内容:谢谢你的解释,这正是我所希望的