Tengo un poco de código usando una configuración simple de socket tcp para probar algo. Ejecutamos pylint --errors-only
en nuestros archivos python, generalmente como una forma de validar todo nuestro código.Cómo evitar que python pylint se queje sobre el método sendall de clase de socket
Sin embargo, el simple código de ejemplo que se da en la documentación de la biblioteca de Python zócalo - http://docs.python.org/library/socket.html - es la salida:
************* Module SocketExample
E: 16: Instance of '_socketobject' has no 'recv' member
E: 18: Instance of '_socketobject' has no 'sendall' member
La documentación muestra estos miembros, se ejecuta el código y obras.
a dir de toma de muestra les existente también:
>>> import socket
>>> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>>> dir(s)
['__class__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__slots__', '__str__', '__subclasshook__', '__weakref__', '_sock', 'accept', 'bind', 'close', 'connect', 'connect_ex', 'dup', 'family', 'fileno', 'getpeername', 'getsockname', 'getsockopt', 'gettimeout', 'listen', 'makefile', 'proto', 'recv', 'recv_into', 'recvfrom', 'recvfrom_into', 'send', 'sendall', 'sendto', 'setblocking', 'setsockopt', 'settimeout', 'shutdown', 'type']
Esto se debe al fragmento:
for method in _delegate_methods:
setattr(self, method, getattr(_sock, method))
En la implementación socket.py.
¿Se puede hacer para aceptar este estilo (y validarlo) o es la única opción para ignorar las advertencias de "no miembro" con # pylint: disable-msg=E1101
?
Agregar eso al archivo rc tiene mucho sentido. Significa que el objeto no obtiene ninguna comprobación en absoluto, pero es más agradable que las inhabilidades locales. –
Llamar a esto la respuesta, porque funcionará hoy. La respuesta de sthenault es buena, pero requerirá más esfuerzo. Sin embargo, es un esfuerzo noble: conseguirlo en github y la comunidad de uso de pilones puede comenzar a contribuir con partes de lib comunes y comunes. –
Sí, mi respuesta me pareció hacky en comparación, y sin duda demasiado amplia para lo que realmente necesitamos, pero con suerte no tan amplia como para causar problemas. – bossylobster