Pergunta

Se eu derivar uma classe de ctypes.BigEndianStructure, pylint avisa se eu não chamo BigEndianStructure.__init__(). Grande, mas se eu corrigir o meu código, pylint ainda adverte:

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)

No começo eu achava que isso era porque a estrutura vem de um módulo C. Eu não receber o aviso se eu subclasse de uma das minhas aulas ou, digamos, SocketServer.BaseServer que é pura python. Mas eu também não receber o aviso se eu subclasse de smbus.SMBus, que está em um módulo C.

Alguém sabe de uma solução alternativa que não seja a desativação W0231?

Foi útil?

Solução

Tente usar as chamadas super novo estilo:

class Foo(ctypes.BigEndianStructure):
    def __init__(self):
        super(Foo, self).__init__()
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top