TypeError:__ init __()缺少2个必需的位置参数:'client_socket'和'statusMessage'

ssd*_*072 3 python

import socket
import sys

class SimpleClient:
    def __init__(self, client_socket, statusMessage):
        self.client_socket = client_socket
        self.statusMessage = statusMessage

    def connectToServer(self):
        self.client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

        host  = 'cs5700sp15.ccs.neu.edu'
        port  = 27993

        remote_ip = socket.gethostbyname(host)

        try:
            self.client_socket.connect((remote_ip, port))
        except socket.error:
            print ('Connection failed')
            sys.exit()

        print ('Connection successful')

    def sendHelloMessage(self):
        """This funtion sends the initial HELLO message to the server"""
        nu_id = input('Enter your NUID: ')
        hello_message = 'cs5700spring2015 HELLO {}\n'.format(nu_id)
        self.client_socket.send(bytes(hello_message, 'ascii'))

    def receiveStatusMessage(self):
        """This function receives the STATUS message from the server"""
        self.statusMessage = str(self.client_socket.recv(1024))
        print (self.statusMessage)

        #handleStatusMessage()

def main():
  client = SimpleClient()
  client.connectToServer()
  client.sendHelloMessage()
  client.receiveStatusMessage()  

if __name__ == "__main__":main()
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Traceback (most recent call last):
  File "/Users/sanketdeshpande/Documents/workspace/test/project01-simpleclient.py", line 49, in <module>
    if __name__ == "__main__":main()
  File "/Users/sanketdeshpande/Documents/workspace/test/project01-simpleclient.py", line 44, in main
    client = SimpleClient()
TypeError: __init__() missing 2 required positional arguments: 'client_socket' and 'statusMessage'
Run Code Online (Sandbox Code Playgroud)

ron*_*akg 6

如果要允许不向类启动器传递任何参数,则必须使用设置为None(或适当的任何值)的默认值来定义启动器.

例如,

def __init__(self, client_socket=None, statusMessage=""):
    self.client_socket = client_socket
    self.statusMessage = statusMessage
Run Code Online (Sandbox Code Playgroud)

现在,您可以在不传递初始化参数的情况下调用类实例化.

client = SimpleClient()
Run Code Online (Sandbox Code Playgroud)


GLH*_*LHF 6

class SimpleClient:
    def __init__(self, client_socket, statusMessage):
Run Code Online (Sandbox Code Playgroud)

你的类有两个参数,但是当你调用它时;

client = SimpleClient()
Run Code Online (Sandbox Code Playgroud)

你没有写任何参数。因此,您必须输入 2 个参数,它们可能是None.