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

我在覆盖线程类的 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)

我也在其他帖子中搜索过,但我无法解决我的问题。


森林海
浏览 194回答 2
2回答

泛舟湖上清波郎朗

您需要conne手动分配作为实例的属性。Thread.__init__将其作为参数传递给将不起作用(将设置为 Thread 类的组参数)。from threading import Threadclass ClientHandle(Thread):    def __init__(self, conne=None):        super().__init__() # Python 3        self.conne = conne

慕村225694

Thread.__init__没有名为 的参数conne,因此您必须将该值作为位置参数传递。def __init__(self, conne=None):     threading.Thread.__init__(self, conne)顺便说一句, class 属性client_handle.conne似乎没有任何用途;你可能可以摆脱它。更新:将套接字传递给Thread.__init__特别是显然是错误的,但这适用于任何“发明”参数名称的尝试,例如conne没有名为conne.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python