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