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?

Était-ce utile?

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
scroll top