J'ai une classe simple socket: MySocketLib.py ..Python - utilisation de 'auto' - Noob ici va fou en essayant de le comprendre
import socket
class socklib():
def create_tcp_serversocket(self,port):
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind((socket.gethostname(), port))
serversocket.listen(5)
return serversocket
def send_msg(self, sock, msg, msglen):
... blah blah ...
def recv_msg(self, sock, msglen):
... blah blah ....
Mon fichier principal est Server.py comme suit:
import MySocketLib
class serverclass():
def __init__(self,port):
self.servsock = 0
self.port = port
def run(self):
self.servsock = self.create_tcp_serversocket(self.port)
(clientsock, address) = self.servsock.accept() # ERROR: 'SELF' not defined
... blah blah ...
#############################
### Main startup code
if __name__ == '__main__':
server = serverclass(2000) # server is on port 2000
server.run()
Je continue à obtenir l'erreur ci-dessous:
File "D:\CodeLearn\Server.py", line 14, in serverclass
(clientsock, address) = self.servsock.accept()
NameError: name 'self' is not defined
Je n'arrive pas à maîtriser le concept de "soi". Parfois, il semble nécessaire et parfois non. Pourquoi aurais-je besoin de définir 'self' ici quand c'est un mot-clé python?
Merci à tous ... c'était en effet les onglets et les problèmes d'espacement. J'utilise eclipse et dans les préférences j'ai défini les préférences "Editor" pour utiliser les espaces lors de la tabulation.
En quoi 'serverclass' et' socklib' sont-ils liés? – SilentGhost
En outre, dans le code, vous montrez erreur pertinente n'est pas sur la ligne 14, mais sur la ligne 11. Je suppose que vous ne nous montrez pas ce qui vous donne cette erreur, n'est-ce pas? – SilentGhost
Où avez-vous lu que 'self' est un mot-clé Python? –