所以我有这段代码

import socket
def main():
    #does a bunch of argument parsing
while True:
     newsock, fromaddr = s.accept()
     ssl_sock = context.wrap_socket(newsock, server_side=True)
     threading.Thread(target=tls_listener, args=(ssl_sock,)).start()

def tls_listener(ssl_sock):
     #the thing I want to turn into a class
     #calls other functions, does some reporting



if __name__ == "__main__":
     main()


我想让tls_listener成为一个类(它已经增长了很多,并且我意识到我应该抽象它(并使用self而不是传递变量)),但是不确定如何启动一个类的实例使用线程,因为它需要传递一个函数。我应该做类似的事情吗

class TlsListener(threading):
    #overload run()


还是有可能让线程创建TlsListener类的新实例?

最佳答案

假设您希望在每次接受套接字时都创建TlsListener类的新实例,则只需将代码保持原样,并在tls_listener函数内部创建一个新类:

while True:
     newsock, fromaddr = s.accept()
     ssl_sock = context.wrap_socket(newsock, server_side=True)
     threading.Thread(target=tls_listener, args=(ssl_sock,)).start()

def tls_listener(ssl_sock):
    t = TlsListener()  # new instance of TlsListener class

09-07 05:16