为了账号安全,请及时绑定邮箱和手机立即绑定

__init__() 得到了一个意外的关键字参数“conne”

__init__() 得到了一个意外的关键字参数“conne”

森林海 2021-09-02 20:04:46
我在覆盖线程类的 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


查看完整回答
反对 回复 2021-09-02
?
慕村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.


查看完整回答
反对 回复 2021-09-02
  • 2 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号