Pylint für Super __init__ falsch positiven
Frage
Wenn ich eine Klasse von ctypes.BigEndianStructure
ableiten, warnt Pylint wenn ich BigEndianStructure.__init__()
nicht nennen. Großartig, aber wenn ich meinen Code zu beheben, Pylint noch warnt:
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)
Zuerst dachte ich, das war, weil Struktur aus einem C-Modul kommt. Ich habe nicht die Warnung, wenn ich von einer meiner Klassen, Unterklasse oder, sagen, SocketServer.BaseServer
die reine Python ist. Aber ich weiß nicht auch die Warnung erhalten, wenn ich von smbus.SMBus
Unterklasse, die in einem C-Modul ist.
Wer weiß, von einer Vermeidung des Problems anders als W0231 deaktivieren?
Lösung
Versuchen Sie, die im neuen Stil super
Anrufe mit:
class Foo(ctypes.BigEndianStructure):
def __init__(self):
super(Foo, self).__init__()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow