On Fri, Apr 22, 2022 at 10:09:33PM -0700, Larry Hastings wrote: [Larry]
To be clear: `forward class` creates the official, actual class object. Code that wants to take a reference to the class object may take references to the `forward class` declared class, and interact with it as normal. However, a class created by `forward class` can't be *instantiated* until after the matching `continue class` statement finishes.
[Steve (me)]
Since the "forward class" is a real class,
It's a "forward-declared class object". It's the real class object, but it hasn't been fully initialized yet, and won't be until the "continue class" statement.
The only thing that makes it not fully initialised is that it has a bozo bit dunder "__forward__" instructing the interpreter to disallow instantiation. Yes? If I take that class object created by `forward class X`, and delete the dunder, there is no difference between it and other regular classes. Am I correct? So your reasoning is circular: you give it a dunder marking it as a "forward-declared class object" to prevent it from being instantiated, but the only reason it can't be instantiated is that it has the dunder. I won't respond to the rest of your post until you have clarified the above, in case I have misunderstood. -- Steve