ложный положительный результат для суперкласса __init__
Вопрос
Если я получаю класс из ctypes.BigEndianStructure
, Pylint предупредит, если я не вызову BigEndianStructure .__ init __ ()
. Отлично, но если я исправлю свой код, Pylint все равно предупредит:
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)
Сначала я подумал, что это потому, что Structure происходит из модуля C. Я не получаю предупреждение, если я подкласс от одного из моих классов или, скажем, SocketServer.BaseServer
, который является чистым Python. Но я также не получаю предупреждение, если делаю подкласс из smbus.SMBus
, который находится в модуле C.
Кто-нибудь знает обходной путь, кроме отключения W0231?
Решение
Попробуйте использовать вызовы super
в новом стиле:
class Foo(ctypes.BigEndianStructure):
def __init__(self):
super(Foo, self).__init__()
Не связан с StackOverflow