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?

War es hilfreich?

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