簡體   English   中英

Python super init 自定義套接字類

[英]Python super init custom socket class

我想寫一個繼承socket功能的類。

所以我的代碼看起來像這樣:

class walkie_talkie(socket.socket(socket.AF_INET, socket.SOCK_STREAM)):
    def __init__(self):
        self.BUFFERSIZE = 8192
        self.STATE = None
        self.IP = None                              # Server IP
        self.PORT = 5000
        self.NUMBER_OF_UNACCEPTED_CONNECTIONS = 1
        self.bytestream = None
        super().__init__()

我將此類用作:

from walkie_talkie import walkie_talkie

rpi1 = walkie_talkie()

所以我想使用super().__init__()繼承socket.socket(socket.AF_INET, socket.SOCK_STREAM)的功能

但是,我收到此錯誤:

File "...\lib\socket.py", line 151, in __init__
    _socket.socket.__init__(self, family, type, proto, fileno)
TypeError: an integer is required (got type str)

有人能告訴我如何使用 super 函數嗎?

正如jasonharper 所指定的,一個類只能繼承自另一個類,例如socket.socket 您不能像您在此處嘗試的那樣從類的實例繼承。 您嘗試傳遞給socket.socket()的參數應該放在super().__init__()中。

class walkie_talkie(socket.socket):
    def __init__(self):
        self.BUFFERSIZE = 8192
        self.STATE = None
        self.IP = None  # Server IP
        self.PORT = 5000
        self.NUMBER_OF_UNACCEPTED_CONNECTIONS = 1
        self.bytestream = None
        super().__init__(socket.AF_INET, socket.SOCK_STREAM)

這個答案是由 OP V.Hunon在 CC BY-SA 4.0 下作為對問題Python super init custom socket class編輯發布的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM