Si je dérive une classe de ctypes.BigEndianStructure, pylint avertit si je n'appelle pas BigEndianStructure. init(). Grand, mais si je fixe mon code, pylint avertit encore:pylint faux positif pour la superclasse __init__
import ctypes
class Foo(ctypes.BigEndianStructure):
def __init__(self):
ctypes.BigEndianStructure.__init__(self)
$ pylint mymodule.py
C: 1: Missing docstring
C: 3:Foo: Missing docstring
W: 4:Foo.__init__: __init__ method from base class 'Structure' is not called
W: 4:Foo.__init__: __init__ method from base class 'BigEndianStructure' is not called
R: 3:Foo: Too few public methods (0/2)
Au début, je pensais que cela parce que la structure vient d'un module C. Je ne reçois pas l'avertissement si je sous-classe d'une de mes classes ou, disons, SocketServer.BaseServer qui est pur python. Mais je ne reçois pas l'avertissement si je sous-classe de smbus.SMBus, qui est dans un module C.
Quelqu'un connaît une solution de contournement autre que la désactivation de W0231?
Ahh, qui aurait dû être la chose évidente d'essayer. Merci. Il fixe l'avertissement. Je suis curieux cependant, est-ce que Structure/BigEndianStructure utilise super()? Le conseil que j'ai vu est d'utiliser super() si la superclasse utilise super() ... – bstpierre