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

时间:2015-01-24 06:26:20

标签: 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()

我收到以下错误:

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'

2 个答案:

答案 0 :(得分:6)

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

例如,

def __init__(self, client_socket=None, statusMessage=""):
    self.client_socket = client_socket
    self.statusMessage = statusMessage

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

client = SimpleClient()

答案 1 :(得分:3)

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

你的班级有两个论点,但你打电话的时候;

client = SimpleClient()

你没有写任何参数。所以你必须提出2个参数,它们可能是None