pylint faux positif pour la super-classe __init__
Question
Si je dérive une classe de ctypes.BigEndianStructure
, pylint avertit si je n'appelle pas BigEndianStructure .__ init __ ()
. Génial, mais si je répare mon code, pylint avertit toujours:
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 c’était parce que Structure vient d’un module C. Je ne reçois pas l'avertissement si je sous-classe à partir de l'une de mes classes ou, disons, SocketServer.BaseServer
, qui est du pur python. Mais je ne reçois pas non plus l'avertissement si je sous-classe de smbus.SMBus
, qui se trouve dans un module C.
Quelqu'un connaît-il une solution de contournement autre que la désactivation de W0231?
La solution
Essayez d'utiliser les appels super
de style nouveau:
class Foo(ctypes.BigEndianStructure):
def __init__(self):
super(Foo, self).__init__()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow