如何在 None 的 Python 列表中设置意外类型



我正试图将一个端口放入None的列表中

ports = [None] * 5
for ident in range(len(self.ports)):
if self.ports[ident] is None:
try:
serialC = Serial("COM" + str(ident), 19200)
portX = Port(serialC, ident, self.main)
#portX.start()
self.ports[ident] = portX
except Exception as e:
print(e)
continue

但我得到了一个意外类型(int,端口(预期(int,无((切片,itarable[无](

带有错误消息:无法设置属性。

如何修复此错误?。

class Port(threading.Thread):
def __init__(self, port, ident, main):
self.main = main
self.port = port
self.ident = ident
threading.Thread.__init__(self)
Traceback (most recent call last):
File "C:UsersTDJ-PCPycharmProjectsembeddedProjectserialTh.py", line 28, in check
portX = Port(Serial("Com" + str(ident), 19200), ident, self.main)
File "C:UsersTDJ-PCPycharmProjectsembeddedProjectport.py", line 10, in __init__
self.ident = ident
AttributeError: can't set attribute

Thread对象的ident属性是不可赋值的;您不能从子类的__init__方法设置它,这样做没有意义。

来自文件:

此线程的"线程标识符",如果线程尚未启动,则为None。这是一个非零整数。请参阅get_ident((函数。当一个线程退出并创建另一个线程时,可以回收线程标识符。即使在线程退出之后,标识符也可用。

因此,在启动线程时会自动为您设置ident属性。

相关内容

最新更新