diff --git a/python/src/com/jetbrains/python/inspections/PyAttributeOutsideInitInspection.java b/python/src/com/jetbrains/python/inspections/PyAttributeOutsideInitInspection.java index 380bef73f3ee..b0528289fdd5 100644 --- a/python/src/com/jetbrains/python/inspections/PyAttributeOutsideInitInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyAttributeOutsideInitInspection.java @@ -17,6 +17,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -54,8 +55,13 @@ public class PyAttributeOutsideInitInspection extends PyInspection { if (!isApplicable(containingClass)) { return; } + final List classAttributes = containingClass.getClassAttributes(); Map attributesInInit = new HashMap(); + for (PyTargetExpression classAttr : classAttributes) { + attributesInInit.put(classAttr.getName(), classAttr); + } + final PyFunction initMethod = containingClass.findMethodByName(PyNames.INIT, false); if (initMethod != null) { PyClassImpl.collectInstanceAttributes(initMethod, attributesInInit); diff --git a/python/testData/inspections/PyAttributeOutsideInitInspection/classAttrs.py b/python/testData/inspections/PyAttributeOutsideInitInspection/classAttrs.py new file mode 100644 index 000000000000..81a5c09a6ce4 --- /dev/null +++ b/python/testData/inspections/PyAttributeOutsideInitInspection/classAttrs.py @@ -0,0 +1,7 @@ +__author__ = 'ktisha' + +class A: + ccc = True + + def foo(self): + self.ccc = False \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/inspections/PyAttributeOutsideInitInspectionTest.java b/python/testSrc/com/jetbrains/python/inspections/PyAttributeOutsideInitInspectionTest.java index ce9eec79388d..530b89d61b19 100644 --- a/python/testSrc/com/jetbrains/python/inspections/PyAttributeOutsideInitInspectionTest.java +++ b/python/testSrc/com/jetbrains/python/inspections/PyAttributeOutsideInitInspectionTest.java @@ -35,6 +35,10 @@ public class PyAttributeOutsideInitInspectionTest extends PyTestCase { doTest(); } + public void testClassAttrs() { + doTest(); + } + private void doTest() { myFixture.configureByFile("inspections/PyAttributeOutsideInitInspection/" + getTestName(true) + ".py"); myFixture.enableInspections(PyAttributeOutsideInitInspection.class);