gpt4 book ai didi

python - 串行端口上下文管理器

转载 作者:太空宇宙 更新时间:2023-11-04 10:58:23 24 4
gpt4 key购买 nike

以下是合理的方法吗?

with SerialPorts() as serial_ports:
in= SerialPort("COM1")
serial_ports.add(in)
out = SerialPort("COM2")
serial_ports.add(out)

# use in and out

其中 SerialPortsSerialPort 实现上下文管理器接口(interface)。

SerialPorts.exit() 在添加的串行端口中循环调用它们的 exit()SerialPortexit() 关闭串口。

有更好的方法吗?

最佳答案

如果你运行这段代码:

class A(object):
def __enter__(self):
return self
def __exit__(self, *args):
print "exit", self

class B(object):
def __enter__(self):
return self
def __exit__(self, *args):
print "exit", self
raise Exception

with A() as a, B() as b:
pass

你会看到两个 __exit__ 都会被调用,即使其中一个引发错误(ABB 之前) A 之前)。

如果您从单个集体 __exit__ 调用两个 __exit__,如果第一个有错误,第二个 __exit__ 将不会被调用.

请改用嵌套上下文管理器,假设您有少量固定数量的上下文管理器。

关于python - 串行端口上下文管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7891746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com