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'
答案 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
。