我有一些代碼使用簡單的tcp套接字設置來測試一些東西。 我們在我們的python文件上運行pylint --errors-only
,通常作爲驗證我們所有代碼的一種方式。如何防止python pylint抱怨套接字類sendall方法
然而,蟒蛇套接字庫文件上給出的簡單示例代碼 - http://docs.python.org/library/socket.html - 將輸出:
************* Module SocketExample
E: 16: Instance of '_socketobject' has no 'recv' member
E: 18: Instance of '_socketobject' has no 'sendall' member
文檔顯示這些成員的代碼運行和工作。
插座的目錄顯示他們現有的太:
>>> 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']
這是下降到片段:
for method in _delegate_methods:
setattr(self, method, getattr(_sock, method))
在socket.py實施。
可以讓pylint接受這種風格(並驗證它),或者是唯一選擇忽略「no member」警告與# pylint: disable-msg=E1101
?
將此添加到rc文件非常有用。這意味着該對象根本沒有檢查,但比本地禁用更好。 – 2012-04-24 20:56:31
調用這個答案 - 因爲它今天會工作。 sthenault的答案很好 - 但需要更多努力。然而,這是一項崇高的努力 - 讓它進入github,使用社區的pylint可以開始貢獻核心和共同的lib部分。 – 2012-04-24 20:57:39
是的,我的回答相比之下感覺很不好,而且對於我們真正需要的東西來說確實過於寬泛,但希望不要過於寬泛以致導致問題。 – bossylobster 2012-04-25 00:36:04