2014-03-06 4 views
6

In Python 3, ich habe den folgenden Code:Wie vermeidet man Pylint-Warnungen für den Konstruktor der geerbten Klasse in Python 3?

class A: 
    def __init__(self): 
     pass 

class B(A): 
    def __init__(self): 
     super().__init__() 

Dies ergibt die Pylint Warnung:

  • Old-style-Klasse definiert. (Old-style-Klasse)
  • Verwendung von Super auf einem alten Stil-Klasse (Super-on-old-Klasse)

In meinem Verständnis in Python 3 gibt es keine alten Stil existiert Klasse mehr und dieser Code ist in Ordnung.

Auch wenn ich explizit neuer Stil Klassen mit diesem Code verwendet

class A(object): 
    def __init__(self): 
     pass 

class B(A): 
    def __init__(self): 
     super().__init__() 

ich Pylint Warnung wegen der unterschiedlichen Syntax 3 den übergeordneten Konstruktor in Python zu nennen:

  • fehlt Argument super() (fehlende-super-Argument)

Also, wie kann ich Pylint mitteilen, dass ich Python 3-Code überprüfen möchte, um diese Meldungen zu vermeiden (ohne die Pyint-Prüfung zu deaktivieren)?

Antwort

0

Dies ist aufgrund eines Fehlers in astroid, die nicht alle Klassen als neuen Stil w/python 3 vor https://bitbucket.org/logilab/astroid/commits/6869fb2acb9f58f0ba2197c6e9008989d85ca1ca

erwäge

Das sollte in Kürze veröffentlicht werden.

+0

Danke! Dies wirft nur die zusätzliche Frage auf, wie man Pylint sagt, welche Python-Version es bei seinen Prüfungen verwenden soll. Ich habe dafür eine neue Frage eingegeben: http://stackoverflow.com/questions/22309636/check-python-3-source-with-pylint-running-with-python-2 – romor

3

Nach this list ‚Fehlende Argument super()‘ hat Code E1004: .Wenn Sie nur eine Art deaktivieren möchten warnen Sie diese Zeile am Anfang der Datei hinzufügen:

# pylint: disable=E1004 

Or Sie können super() wie diese versuchen Aufruf:

class B(A): 
    def __init__(self): 
    super(B, self).__init__() 
+0

Danke, Sie können die Nachricht sogar durch '# pylint: disable = missing-super-argument' deaktivieren. Ist jedoch etwas mit meinem Python-Code nicht in Ordnung oder ist Pylint nicht Python 3-kompatibel? – romor

+0

Ich bin mir nicht sicher, wie ich auf Python 2.7 laufe. pyint Version 1.1 sollte auch Python 3 unterstützen. – skamsie

Verwandte Themen