diff --git a/crates/ruff_linter/resources/test/fixtures/pylint/non_slot_assignment.py b/crates/ruff_linter/resources/test/fixtures/pylint/non_slot_assignment.py index c1ced1bbb80b1..cef5b6dcce1df 100644 --- a/crates/ruff_linter/resources/test/fixtures/pylint/non_slot_assignment.py +++ b/crates/ruff_linter/resources/test/fixtures/pylint/non_slot_assignment.py @@ -54,3 +54,15 @@ def __init__(self, name, middle_name): def setup(self): pass + + +class StudentF(object): + __slots__ = ("name", "__dict__") + + def __init__(self, name, middle_name): + self.name = name + self.middle_name = middle_name # [assigning-non-slot] + self.setup() + + def setup(self): + pass diff --git a/crates/ruff_linter/src/rules/pylint/rules/non_slot_assignment.rs b/crates/ruff_linter/src/rules/pylint/rules/non_slot_assignment.rs index 2371a9b30327c..bd2bf426bf2c3 100644 --- a/crates/ruff_linter/src/rules/pylint/rules/non_slot_assignment.rs +++ b/crates/ruff_linter/src/rules/pylint/rules/non_slot_assignment.rs @@ -142,7 +142,7 @@ fn is_attributes_not_in_slots(body: &[Stmt]) -> Vec { } } - if slots.is_empty() { + if slots.is_empty() || slots.contains("__dict__") { return vec![]; }