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?

È stato utile?

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