Pregunta

Si derivo una clase de ctypes.BigEndianStructure , pylint advierte si no llamo a BigEndianStructure .__ init __ () . Genial, pero si arreglo mi código, pylint aún advierte:

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)

Al principio pensé que esto era porque la Estructura proviene de un módulo en C. No recibo la advertencia si hago una subclase de una de mis clases o, por ejemplo, SocketServer.BaseServer que es Python puro. Pero tampoco recibo la advertencia si hago una subclase de smbus.SMBus , que se encuentra en un módulo C.

¿Alguien sabe de una solución que no sea la desactivación de W0231?

¿Fue útil?

Solución

Intente usar las llamadas super de nuevo estilo:

class Foo(ctypes.BigEndianStructure):
    def __init__(self):
        super(Foo, self).__init__()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top