所以我有这段代码
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