我正在尝试将“端口”放入“无”列表中
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,无) (切片,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:\Users\TDJ-PC\PycharmProjects\embeddedProject\serialTh.py", line 28, in check
portX = Port(Serial("Com" + str(ident), 19200), ident, self.main)
File "C:\Users\TDJ-PC\PycharmProjects\embeddedProject\port.py", line 10, in __init__
self.ident = ident
AttributeError: can't set attribute
答案 0 :(得分:2)
ident
对象的Thread
属性是不可分配的;您无法通过子类的__init__
方法进行设置,这样做也没有道理。
此线程的“线程标识符”;如果尚未启动该线程,则为“无”。这是一个非零整数。请参见get_ident()函数。当一个线程退出并创建另一个线程时,可以回收线程标识符。即使线程退出后,标识符仍然可用。
因此,启动线程时将自动为您设置ident
属性。