pylint false positive per superclasse __init__
Domanda
Se traggo una classe da ctypes.BigEndianStructure
, pylint avverte se non chiamo BigEndianStructure .__ init __ ()
. Fantastico, ma se aggiusto il mio codice, pylint avverte comunque:
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)
Inizialmente ho pensato che ciò fosse dovuto al fatto che Structure proviene da un modulo C. Non ricevo l'avviso se eseguo la sottoclasse di una delle mie classi o, per esempio, SocketServer.BaseServer
che è puro Python. Ma non ricevo nemmeno l'avviso se eseguo la sottoclasse da smbus.SMBus
, che si trova in un modulo C.
Qualcuno sa di una soluzione alternativa oltre a disabilitare W0231?
Soluzione
Prova a usare le chiamate super
di nuovo stile:
class Foo(ctypes.BigEndianStructure):
def __init__(self):
super(Foo, self).__init__()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow