check local class namespace before reaching for cells (closes #17853)
diff --git a/Python/compile.c b/Python/compile.c
index 52e8188..1ecbae8 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -970,6 +970,7 @@
         case LOAD_CLOSURE:
             return 1;
         case LOAD_DEREF:
+        case LOAD_CLASSDEREF:
             return 1;
         case STORE_DEREF:
             return -1;
@@ -2677,7 +2678,9 @@
     switch (optype) {
     case OP_DEREF:
         switch (ctx) {
-        case Load: op = LOAD_DEREF; break;
+        case Load:
+            op = (c->u->u_ste->ste_type == ClassBlock) ? LOAD_CLASSDEREF : LOAD_DEREF;
+            break;
         case Store: op = STORE_DEREF; break;
         case AugLoad:
         case AugStore: