2016-04-21 14 views
0

Wenn ein Attribut nicht in den Slots zuweisen Pylint den Fehler E0237 wirft ‚: Zuordnung in Klasse Slots definiert Attribut nicht‘Warum prüft pylint nach Mitgliedern, die sich beim Zuweisen nicht in __slots__ befinden, aber nicht beim Zugriff?

aber es nicht beim Zugriff auf ein Attribut nicht in Slots

See Beispiel unten.

Ist es ein "fehlendes Feature" oder gibt es einen Grund, es nicht zu überprüfen?

class Dummyclass(object): 

    __slots__ = ['myvariable'] 

    def __init__(self): 
     self.myvariable = 1 

def main(): 
    dummy = Dummyclass() 

    dummy.doesnotexist = 4 #This raises an error 
    temp = dummy.doesnotexist #This does not 
+0

Ich bekomme 'AttributeError' für beide 'dummy.doesnotexist = 4' und' temp = dummy.doesnotexist' – jDo

+0

@jDo: Ich bekomme den Fehler zur Laufzeit, aber nicht bei der Bearbeitung mit pydev + pylint und pycharm. Ich muss das für Tests verwenden, die ein paar Stunden dauern. Ich muss sie vor der Laufzeit erkennen. – Cedric

+0

Ok, ich habe es nicht mit pylint versucht, sondern nur verschiedene Varianten des Codes ausgeführt und in beiden Fällen Fehler bekommen. Ich bin mir nicht sicher, was pylint anders macht – jDo

Antwort

0

Nach einigen mehr Forschung habe ich die Datei python_dir \ Lib \ site-Pakete bearbeitet \ Pylint \ Kontrolleure \ classes.py durch Hinzufügen des Befehls: self._check_in_slots (Knoten) in Besuch Attribut. Es prüft nun sowohl den Zugriff als auch die Zuweisung korrekt.