我在覆盖线程类的 init 方法时遇到问题。当我实例化线程对象时,我只需要它接受一个我传递给 init 方法的套接字。线程类的代码是:class client_handle(threading.Thread): conne = socket.socket(socket.AF_INET, socket.SOCK_STREAM) def __init__(self, conne=None): threading.Thread.__init__(self, conne=conne)当我创建一个 client_handle 对象时,我写道:socket_conn, addr = s.accept()client_thread = client_handle(socket_conn)我也在其他帖子中搜索过,但我无法解决我的问题。
2 回答

泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
您需要conne手动分配作为实例的属性。Thread.__init__将其作为参数传递给将不起作用(将设置为 Thread 类的组参数)。
from threading import Thread
class ClientHandle(Thread):
def __init__(self, conne=None):
super().__init__() # Python 3
self.conne = conne

慕村225694
TA贡献1880条经验 获得超4个赞
Thread.__init__
没有名为 的参数conne
,因此您必须将该值作为位置参数传递。
def __init__(self, conne=None): threading.Thread.__init__(self, conne)
顺便说一句, class 属性client_handle.conne
似乎没有任何用途;你可能可以摆脱它。
更新:将套接字传递给Thread.__init__
特别是显然是错误的,但这适用于任何“发明”参数名称的尝试,例如conne
没有名为conne
.
添加回答
举报
0/150
提交
取消