我在覆蓋線程類的 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)當我創(chuàng)建一個 client_handle 對象時,我寫道:socket_conn, addr = s.accept()client_thread = client_handle(socket_conn)我也在其他帖子中搜索過,但我無法解決我的問題。
2 回答

泛舟湖上清波郎朗
TA貢獻1818條經(jīng)驗 獲得超3個贊
您需要conne手動分配作為實例的屬性。Thread.__init__將其作為參數(shù)傳遞給將不起作用(將設置為 Thread 類的組參數(shù))。
from threading import Thread
class ClientHandle(Thread):
def __init__(self, conne=None):
super().__init__() # Python 3
self.conne = conne

慕村225694
TA貢獻1880條經(jīng)驗 獲得超4個贊
Thread.__init__
沒有名為 的參數(shù)conne
,因此您必須將該值作為位置參數(shù)傳遞。
def __init__(self, conne=None): threading.Thread.__init__(self, conne)
順便說一句, class 屬性client_handle.conne
似乎沒有任何用途;你可能可以擺脫它。
更新:將套接字傳遞給Thread.__init__
特別是顯然是錯誤的,但這適用于任何“發(fā)明”參數(shù)名稱的嘗試,例如conne
沒有名為conne
.
添加回答
舉報
0/150
提交
取消