我是否在此处复制了 class 实例或 class 处理程序?
Did I copy the class instance or the class handler here?
我想按 class 个属性对 class 个处理程序进行排序。
首先我生成一个 class 处理程序列表,以下 5 行在 while 循环中处理。
# here a serial no was entered and validity checked
if snr_ok == True:
device_list.append(Device(snr, prop_list))
logging.info ("Added serial number " + snr + " with properties " + prop_list)
else:
pass
"""Group all instances of by property (which is a gas type)"""
calibration_gases = {'He':[], 'O2':[], 'N':[], 'Ar':[]}
for gas in list(calibration_gases):
for dev in device_list:
if gas in dev.get_gaslist(): # get_gaslist returns a list of strings with some of the gases
calibration_gases[gas].**append(dev)**
print (calibration_gases)
通过按气体类型对 dev
元素进行分组,我将它们添加到 calibration_gases 字典中。
我的问题是:
dev 是 class 实例的副本还是 class 处理程序的副本?
或者用 C 说:Is dev a pointer to the class instance or is it a copy of the class itself?
都没有。 Python 没有 call-by-value/call-by-reference 区别,而是使用 call-by-object-identity 范例。除非你明确地复制某些东西(例如使用切片,obj.copy()
或 copy.deepcopy
),否则它不会发生。
添加到 calibration_gases[gas]
的内容 是可以在 device_list
.
中找到的同一对象
顺便说一下,您可以简单地 for gas in calibration_gases:
而不是 for gas in list(calibration_gases):
。更好的是,您可以这样做:
for gas, devices in calibration_gases.items():
for dev in device_list:
if gas in dev.get_gaslist():
devices.append(dev)
我想按 class 个属性对 class 个处理程序进行排序。 首先我生成一个 class 处理程序列表,以下 5 行在 while 循环中处理。
# here a serial no was entered and validity checked
if snr_ok == True:
device_list.append(Device(snr, prop_list))
logging.info ("Added serial number " + snr + " with properties " + prop_list)
else:
pass
"""Group all instances of by property (which is a gas type)"""
calibration_gases = {'He':[], 'O2':[], 'N':[], 'Ar':[]}
for gas in list(calibration_gases):
for dev in device_list:
if gas in dev.get_gaslist(): # get_gaslist returns a list of strings with some of the gases
calibration_gases[gas].**append(dev)**
print (calibration_gases)
通过按气体类型对 dev
元素进行分组,我将它们添加到 calibration_gases 字典中。
我的问题是:
dev 是 class 实例的副本还是 class 处理程序的副本?
或者用 C 说:Is dev a pointer to the class instance or is it a copy of the class itself?
都没有。 Python 没有 call-by-value/call-by-reference 区别,而是使用 call-by-object-identity 范例。除非你明确地复制某些东西(例如使用切片,obj.copy()
或 copy.deepcopy
),否则它不会发生。
添加到 calibration_gases[gas]
的内容 是可以在 device_list
.
顺便说一下,您可以简单地 for gas in calibration_gases:
而不是 for gas in list(calibration_gases):
。更好的是,您可以这样做:
for gas, devices in calibration_gases.items():
for dev in device_list:
if gas in dev.get_gaslist():
devices.append(dev)